Configuration d'un serveur d'autorisation externe - NICEDCVGestionnaire de sessions

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration d'un serveur d'autorisation externe

Le serveur d'autorisation est le serveur chargé d'authentifier et d'autoriser les SDK et les agents clients.

Par défaut, Session Manager utilise le Broker comme serveur d'autorisation pour générer des jetons d'accès OAuth 2.0 pour les SDK clients et des instructions logicielles pour les agents. Si vous utilisez le Broker comme serveur d'autorisation, aucune configuration supplémentaire n'est requise.

Vous pouvez configurer le gestionnaire de session pour utiliser Amazon Cognito comme serveur d'autorisation externe au lieu du Broker. Pour plus d'informations sur Amazon Cognito, consultez le guide Amazon Cognito.

Pour utiliser Amazon Cognito comme serveur d'autorisation
  1. Créez un groupe d'utilisateurs Amazon Cognito. Pour plus d'informations sur les groupes d'utilisateurs, consultez les fonctionnalités d'Amazon Cognito dans le Guide du développeur Amazon Cognito.

    Utilisez la create-user-poolcommande et spécifiez le nom du pool et la région dans laquelle le créer.

    Dans cet exemple, nous nommons le pooldcv-session-manager-client-app et nous le créons dansus-east-1.

    $ aws cognito-idp create-user-pool --pool-name dcv-session-manager-client-app --region us-east-1

    Exemple de sortie

    { "UserPoolClient": { "UserPoolId": "us-east-1_QLEXAMPLE", "ClientName": "dcv-session-manager-client-app", "ClientId": "15hhd8jij74hf32f24uEXAMPLE", "LastModifiedDate": 1602510048.054, "CreationDate": 1602510048.054, "RefreshTokenValidity": 30, "AllowedOAuthFlowsUserPoolClient": false } }

    Notez leuserPoolId, car vous en aurez besoin lors de l'étape suivante.

  2. Créez un nouveau domaine pour votre groupe d'utilisateurs. Utilisez la create-user-pool-domaincommande et spécifiez un nom de domaine et celuiuserPoolId du groupe d'utilisateurs que vous avez créé à l'étape précédente.

    Dans cet exemple, le nom de domaine estmydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE et nous le créons dansus-east-1.

    $ aws cognito-idp create-user-pool-domain --domain mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE --user-pool-id us-east-1_QLEXAMPLE --region us-east-1

    Exemple de sortie

    { "DomainDescription": { "UserPoolId": "us-east-1_QLEXAMPLE", "AWSAccountId": "123456789012", "Domain": "mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE", "S3Bucket": "aws-cognito-prod-pdx-assets", "CloudFrontDistribution": "dpp0gtexample.cloudfront.net", "Version": "20201012133715", "Status": "ACTIVE", "CustomDomainConfig": {} } }

    Le format du domaine du pool d'utilisateurs est le suivant :https://domain_name.auth.region.amazoncognito.com. Dans cet exemple, le domaine du pool d'utilisateurs esthttps://mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE.auth.us-east-1.amazoncognito.com.

  3. Créez un client de groupe d'utilisateurs. Utilisez la create-user-pool-clientcommande et spécifiez leuserPoolId groupe d'utilisateurs que vous avez créé, le nom du client et la région dans laquelle le créer. Ajoutez l'--generate-secretoption qui permet de spécifier que vous souhaitez générer un secret pour le client de pool d'utilisateurs que vous créez.

    Dans ce cas, le nom du client estdcv-session-manager-client-app et nous le créons dans laus-east-1 région.

    $ aws cognito-idp create-user-pool-client --user-pool-id us-east-1_QLEXAMPLE --client-name dcv-session-manager-client-app --generate-secret --region us-east-1

    Exemple de sortie

    { "UserPoolClient": { "UserPoolId": "us-east-1_QLEXAMPLE", "ClientName": "dcv-session-manager-client-app", "ClientId": "2l9273hp6k2ut5cugg9EXAMPLE", "ClientSecret": "1vp5e8nec7cbf4m9me55mbmht91u61hlh0a78rq1qki1lEXAMPLE", "LastModifiedDate": 1602510291.498, "CreationDate": 1602510291.498, "RefreshTokenValidity": 30, "AllowedOAuthFlowsUserPoolClient": false } }
    Note

    Prenez note duClientId etClientSecret. Vous devrez fournir ces informations aux développeurs lorsqu'ils demanderont des jetons d'accès pour les demandes d'API.

  4. Créez un nouveau serveur de ressources OAuth2.0 pour le groupe d'utilisateurs. Un serveur de ressources est un serveur dédié aux ressources à accès protégé. Il gère les demandes authentifiées de jetons d'accès.

    Utilisez la create-resource-servercommande et spécifiez leuserPoolId groupe d'utilisateurs, un identifiant et un nom uniques pour le serveur de ressources, l'étendue et la région dans laquelle le créer.

    Dans cet exemple, nous utilisonsdcv-session-manager comme identifiant et nom, et nous utilisonssm_scope comme nom et description de l'étendue.

    $ aws cognito-idp create-resource-server --user-pool-id us-east-1_QLEXAMPLE --identifier dcv-session-manager --name dcv-session-manager --scopes ScopeName=sm_scope,ScopeDescription=sm_scope --region us-east-1

    Exemple de sortie

    { "ResourceServer": { "UserPoolId": "us-east-1_QLEXAMPLE", "Identifier": "dcv-session-manager", "Name": "dcv-session-manager", "Scopes": [ { "ScopeName": "sm_scope", "ScopeDescription": "sm_scope" }] } }
  5. Mettez le client du groupe d'utilisateurs.

    Utilisez la commande update-user-pool-client. Spécifiez leuserPoolId pool d'utilisateurs, le clientClientId du pool d'utilisateurs et la région. Pour--allowed-o-auth-flows, spécifiezclient_credentials pour indiquer que le client doit obtenir des jetons d'accès à partir du point de terminaison du jeton en utilisant une combinaison d'un identifiant client et d'un secret client. Pour--allowed-o-auth-scopes, spécifiez l'identifiant du serveur de ressources et le nom de l'étendue comme suit :resource_server_identifier/scope_name. Ajoutez le--allowed-o-auth-flows-user-pool-client pour indiquer que le client est autorisé à suivre le protocole OAuth lors de l'interaction avec les groupes d'utilisateurs Cognito.

    $ aws cognito-idp update-user-pool-client --user-pool-id us-east-1_QLEXAMPLE --client-id 2l9273hp6k2ut5cugg9EXAMPLE --allowed-o-auth-flows client_credentials --allowed-o-auth-scopes dcv-session-manager/sm_scope --allowed-o-auth-flows-user-pool-client --region us-east-1

    Exemple de sortie

    { "UserPoolClient": { "UserPoolId": "us-east-1_QLEXAMPLE", "ClientName": "dcv-session-manager-client-app", "ClientId": "2l9273hp6k2ut5cugg9EXAMPLE", "ClientSecret": "1vp5e8nec7cbf4m9me55mbmht91u61hlh0a78rq1qki1lEXAMPLE", "LastModifiedDate": 1602512103.099, "CreationDate": 1602510291.498, "RefreshTokenValidity": 30, "AllowedOAuthFlows": [ "client_credentials" ], "AllowedOAuthScopes": [ "dcv-session-manager/sm_scope" ], "AllowedOAuthFlowsUserPoolClient": true } }
    Note

    Le groupe d'utilisateurs est désormais prêt à fournir et à authentifier les jetons d'accès. Dans cet exemple, l'URL du serveur d'autorisation esthttps://cognito-idp.us-east-1.amazonaws.com/us-east-1_QLEXAMPLE/.well-known/jwks.json.

  6. Tester la configuration.

    $ curl -H "Authorization: Basic `echo -n 2l9273hp6k2ut5cugg9EXAMPLE:1vp5e8nec7cbf4m9me55mbmht91u61hlh0a78rq1qki1lEXAMPLE | base64`" -H "Content-Type: application/x-www-form-urlencoded" -X POST "https://mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE.auth.us-east-1.amazoncognito.com/oauth2/token?grant_type=client_credentials&scope=dcv-session-manager/sm_scope"

    Exemple de sortie

    { "access_token":"eyJraWQiOiJGQ0VaRFpJUUptT3NSaW41MmtqaDdEbTZYb0RnSTQ5b2VUT0cxUUI1Q2VJPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiZGN2LXNlc3Npb24tbWFuYWdlclwvcGVybWlzc2lvbnMiLCJhdXRoX3RpbWUiOjE2MDI1MTMyODMsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy13ZXN0LTIuYW1hem9uYXdzLmNvbVwvdXMtd2VzdC0yX1FMZTA3SU9GViIsImV4cCI6MTYwMjUxNjg4MywiaWF0IjoxNjAyNTEzMjgzLCJ2ZXJzaW9uIjoyLCJqdGkiOiIyMDk2YTg4NS04YWQ0LTRmYjgtYjI2Mi1hMmNkNDk0OGZjNjYiLCJjbGllbnRfaWQiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCJ9.ZLZpS4CiiLq1X_VSm911hNT4g8A0FKZXScVJyyV0ijcyOfUOBcpgSMGqJagLYORFuYwLS5c7g4eO04wIwnw21ABGIDcOMElDPCJkrzjfLEPS_eyK3dNmlXDEvdS-Zkfi0HIDsd6audjTXKzHlZGScr6ROdZtId5dThkpEZiSx0YwiiWe9crAlqoazlDcCsUJHIXDtgKW64pSj3-uQQGg1Jv_tyVjhrA4JbD0k67WS2V9NW-uZ7t4zwwaUmOi3KzpBMi54fpVgPaewiVlUm_aS4LUFcWT6hVJjiZF7om7984qb2gOa14iZxpXPBJTZX_gtG9EtvnS9uW0QygTJRNgsw", "expires_in":3600, "token_type":"Bearer" }
  7. Enregistrez le serveur d'autorisation externe à utiliser avec le courtier à l'aide de laregister-auth-server commande.

    $ sudo -u root dcv-session-manager-broker register-auth-server --url https://cognito-idp.us-east-1.amazonaws.com/us-east-1_QLEXAMPLE/.well-known/jwks.json

Les développeurs peuvent désormais utiliser le serveur pour demander des jetons d'accès. Lorsque vous demandez des jetons d'accès, fournissez l'ID client, le secret client et l'URL du serveur générés ici. Pour plus d'informations sur la demande de jetons d'accès, voir Création, obtention d'un jeton d'accès et demande d'API dans le Guide du développeur du gestionnaire de session NICE DCV.