Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Configuración de un servidor de autorización externo
El servidor de autorización es el servidor responsable de autenticar y autorizar los SDK y los agentes del cliente.
De forma predeterminada, Session Manager utiliza el broker como servidor de autorización para generar los tokens de acceso de OAuth 2.0 para SDK cliente e instrucciones de software para agentes. Si utiliza el broker como servidor de autorización, no se requiere configuración adicional.
Puede configurar Session Manager para que utilice Amazon Cognito como servidor de autorización externo en lugar del broker. Para obtener más información sobre Amazon Cognito, consulte la Guía para desarrolladores de Amazon Cognito.
Para utilizar Amazon Cognito como servidor de autorización
-
Cree un grupo de usuarios de Amazon Cognito. Para obtener más información sobre grupos de usuarios, consulte Características de Amazon Cognito en la Guía para desarrolladores de Amazon Cognito.
Utilice el comando create-user-pool y especifique el nombre de un grupo y la región en la que desea crearlo.
En este ejemplo, llamamos al grupo
dcv-session-manager-client-appy lo creamos enus-east-1.$aws cognito-idp create-user-pool --pool-namedcv-session-manager-client-app--regionus-east-1Ejemplo de resultado
{ "UserPoolClient": { "UserPoolId": "us-east-1_QLEXAMPLE", "ClientName": "dcv-session-manager-client-app", "ClientId": "15hhd8jij74hf32f24uEXAMPLE", "LastModifiedDate": 1602510048.054, "CreationDate": 1602510048.054, "RefreshTokenValidity": 30, "AllowedOAuthFlowsUserPoolClient": false } }Tome nota del
userPoolId, ya que lo necesitará en el siguiente paso. -
Cree un nuevo dominio para el grupo de usuarios. Utilice el comando create-user-pool-domain y especifique un nombre de dominio y el
userPoolIddel grupo de usuarios que creó en el paso anterior.En este ejemplo, el nombre del dominio es
mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLEy lo creamos enus-east-1.$aws cognito-idp create-user-pool-domain --domainmydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE--user-pool-idus-east-1_QLEXAMPLE--regionus-east-1Ejemplo de resultado
{ "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": {} } }El formato del dominio del grupo de usuarios es el siguiente:
https://. En este ejemplo, el dominio del grupo de usuarios esdomain_name.auth.region.amazoncognito.comhttps://mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE.auth.us-east-1.amazoncognito.com. -
Cree un cliente del grupo de usuarios. Utilice el comando create-user-pool-client y especifique el
userPoolIddel grupo de usuarios que creó, un nombre para el cliente y la región en la que desea crearlo. Además, incluya la opción--generate-secretpara especificar si desea generar un secreto para el cliente del grupo de usuarios que está creando.En este caso, el nombre del cliente es
dcv-session-manager-client-appy lo creamos en la regiónus-east-1.$aws cognito-idp create-user-pool-client --user-pool-idus-east-1_QLEXAMPLE--client-namedcv-session-manager-client-app--generate-secret --regionus-east-1Ejemplo de resultado
{ "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 } }nota
Tome nota de
ClientIdyClientSecret. Deberá facilitar a los desarrolladores esta información que necesitarán cuando soliciten tokens de acceso para las solicitudes de la API. -
Cree un nuevo servidor de recursos OAuth2.0 para el grupo de usuarios. Un servidor de recursos contiene recursos de acceso protegido. Gestiona las solicitudes autenticadas de tokens de acceso.
Utilice el comando create-resource-server y especifique el
userPoolIddel grupo de usuarios, un identificador único y un nombre para el servidor de recursos, el ámbito y la región en la que desea crearlo.En este ejemplo, utilizamos
dcv-session-managercomo identificador y nombre, ysm_scopecomo nombre del ámbito y descripción.$aws cognito-idp create-resource-server --user-pool-idus-east-1_QLEXAMPLE--identifierdcv-session-manager--namedcv-session-manager--scopes ScopeName=sm_scope,ScopeDescription=sm_scope--regionus-east-1Ejemplo de resultado
{ "ResourceServer": { "UserPoolId": "us-east-1_QLEXAMPLE", "Identifier": "dcv-session-manager", "Name": "dcv-session-manager", "Scopes": [ { "ScopeName": "sm_scope", "ScopeDescription": "sm_scope" }] } } -
Actualice el cliente del grupo de usuarios.
Utilice el comando update-user-pool-client. Especifique el
userPoolIddel grupo de usuarios, elClientIddel cliente del grupo de usuarios y la región. Para--allowed-o-auth-flows, especifiqueclient_credentialssi desea indicar que el cliente debe obtener los tokens de acceso del punto de conexión del token utilizando una combinación de ID de cliente y de secreto de cliente. Para--allowed-o-auth-scopes, especifique el identificador del servidor de recursos y el nombre del ámbito de este modo:. Incluya elresource_server_identifier/scope_name--allowed-o-auth-flows-user-pool-clientpara indicar que el cliente puede seguir el protocolo OAuth al interactuar con grupos de usuarios de Cognito.$aws cognito-idp update-user-pool-client --user-pool-idus-east-1_QLEXAMPLE--client-id2l9273hp6k2ut5cugg9EXAMPLE--allowed-o-auth-flows client_credentials --allowed-o-auth-scopesdcv-session-manager/sm_scope--allowed-o-auth-flows-user-pool-client --regionus-east-1Ejemplo de resultado
{ "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 } }nota
El grupo de usuarios está ahora listo para proporcionar y autenticar tokens de acceso. En este ejemplo, la URL del servidor de autorización es
https://cognito-idp..us-east-1.amazonaws.com/us-east-1_QLEXAMPLE/.well-known/jwks.json -
Pruebe la configuración.
$curl -H "Authorization: Basic `echo -n2l9273hp6k2ut5cugg9EXAMPLE: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"Ejemplo de resultado
{ "access_token":"eyJraWQiOiJGQ0VaRFpJUUptT3NSaW41MmtqaDdEbTZYb0RnSTQ5b2VUT0cxUUI1Q2VJPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiZGN2LXNlc3Npb24tbWFuYWdlclwvcGVybWlzc2lvbnMiLCJhdXRoX3RpbWUiOjE2MDI1MTMyODMsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy13ZXN0LTIuYW1hem9uYXdzLmNvbVwvdXMtd2VzdC0yX1FMZTA3SU9GViIsImV4cCI6MTYwMjUxNjg4MywiaWF0IjoxNjAyNTEzMjgzLCJ2ZXJzaW9uIjoyLCJqdGkiOiIyMDk2YTg4NS04YWQ0LTRmYjgtYjI2Mi1hMmNkNDk0OGZjNjYiLCJjbGllbnRfaWQiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCJ9.ZLZpS4CiiLq1X_VSm911hNT4g8A0FKZXScVJyyV0ijcyOfUOBcpgSMGqJagLYORFuYwLS5c7g4eO04wIwnw21ABGIDcOMElDPCJkrzjfLEPS_eyK3dNmlXDEvdS-Zkfi0HIDsd6audjTXKzHlZGScr6ROdZtId5dThkpEZiSx0YwiiWe9crAlqoazlDcCsUJHIXDtgKW64pSj3-uQQGg1Jv_tyVjhrA4JbD0k67WS2V9NW-uZ7t4zwwaUmOi3KzpBMi54fpVgPaewiVlUm_aS4LUFcWT6hVJjiZF7om7984qb2gOa14iZxpXPBJTZX_gtG9EtvnS9uW0QygTJRNgsw", "expires_in":3600, "token_type":"Bearer" } -
Registre el servidor de autorización externo para utilizarlo con el broker mediante el comando register-auth-server.
$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
Los desarrolladores pueden ahora utilizar el servidor para solicitar tokens de acceso. Cuando solicite tokens de acceso, proporcione el ID del cliente, el secreto del cliente y la URL del servidor generados aquí. Para obtener más información sobre la solicitud de tokens de acceso, consulte Obtener un token de acceso y realizar una solicitud a la API en la Guía para desarrolladores de Amazon DCV Session Manager.