Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configurazione di un server di autorizzazione esterno
Il server di autorizzazione è il server responsabile dell'autenticazione e dell'autorizzazione degli SDK e degli agenti client.
Per impostazione predefinita, Session Manager utilizza il Broker come server di autorizzazione per generare token di accesso OAuth 2.0 per gli SDK dei client e le istruzioni software per gli agenti. Se si utilizza il Broker come server di autorizzazione, non è richiesta alcuna configurazione aggiuntiva.
Puoi configurare Session Manager per utilizzare Amazon Cognito come server di autorizzazione esterno anziché come Broker. Per ulteriori informazioni su Amazon Cognito, consulta la Guida per sviluppatori di Amazon Cognito.
Per utilizzare Amazon Cognito come server di autorizzazione
-
Crea un nuovo pool di utenti di Amazon Cognito. Per ulteriori informazioni sui pool di utenti, consulta Caratteristiche di Amazon Cognito nella Amazon Cognito Developer Guide.
Utilizzate il create-user-poolcomando e specificate il nome del pool e la regione in cui crearlo.
In questo esempio, diamo un nome al pool
dcv-session-manager-client-app
e lo creiamo inus-east-1
.$
aws cognito-idp create-user-pool --pool-namedcv-session-manager-client-app
--regionus-east-1
Output di esempio
{ "UserPoolClient": { "UserPoolId": "us-east-1_QLEXAMPLE", "ClientName": "dcv-session-manager-client-app", "ClientId": "15hhd8jij74hf32f24uEXAMPLE", "LastModifiedDate": 1602510048.054, "CreationDate": 1602510048.054, "RefreshTokenValidity": 30, "AllowedOAuthFlowsUserPoolClient": false } }
Prendi nota di questo
userPoolId
dato poiché sarà necessario nella fase successiva. -
Crea un nuovo dominio per il dominio di utenti. Usa il create-user-pool-domaincomando e specifica un nome di dominio e il nome del nome
userPoolId
di dominio e il nome del client di utenti che hai creato nella fase precedente.In questo esempio, il nome di dominio è
mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE
e lo creiamo inus-east-1
.$
aws cognito-idp create-user-pool-domain --domainmydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE
--user-pool-idus-east-1_QLEXAMPLE
--regionus-east-1
Output di esempio
{ "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": {} } }
Il formato del dominio del pool di utenti è il seguente:
https://
. In questo esempio, il dominio del pool di utenti èdomain_name
.auth.region
.amazoncognito.comhttps://mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE.auth.us-east-1.amazoncognito.com
. -
Creazione di un client pool di utenti Usa il create-user-pool-clientcomando e specifica il pool
userPoolId
di utenti che hai creato, un nome per il client e la regione in cui crearlo. Inoltre, includi l'--generate-secret
opzione per specificare che si desidera generare un segreto per il client di utenti che si sta creando.In questo caso, il nome del cliente è
dcv-session-manager-client-app
e lo creiamo nellaus-east-1
Regione.$
aws cognito-idp create-user-pool-client --user-pool-idus-east-1_QLEXAMPLE
--client-namedcv-session-manager-client-app
--generate-secret --regionus-east-1
Output di esempio
{ "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
Prendi nota della
ClientId
eClientSecret
. Dovrai fornire queste informazioni agli sviluppatori quando richiederanno i token di accesso per le richieste API. -
Creazione di un nuovo server di risorse OAuth2.0 per il server di risorse OAuth2.0 per il server di utenti. Un server di risorse è un server di risorse ad accesso protetto. Gestisce le richieste autenticate di token di accesso.
Usa il create-resource-servercomando e specifica il nome
userPoolId
del pool di utenti, un identificatore e un nome univoci per il server di risorse, l'ambito e la regione in cui crearlo.In questo esempio, utilizziamo
dcv-session-manager
come identificatore e nome esm_scope
come nome dell'ambito.$
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-1
Output di esempio
{ "ResourceServer": { "UserPoolId": "us-east-1_QLEXAMPLE", "Identifier": "dcv-session-manager", "Name": "dcv-session-manager", "Scopes": [ { "ScopeName": "sm_scope", "ScopeDescription": "sm_scope" }] } }
-
Aggiorna il client di utenti.
Utilizza il comando update-user-pool-client. Specificare il nome
userPoolId
del poolClientId
di utenti, il client del pool di utenti e la regione. Per--allowed-o-auth-flows
esempio, specificaclient_credentials
di indicare che il client deve ottenere i token di accesso dall'endpoint del token utilizzando una combinazione di un ID client e un segreto del client. Per--allowed-o-auth-scopes
, specificare l'identificatore del server di risorse e il nome dell'ambito come segue:
.resource_server_identifier
/scope_name
--allowed-o-auth-flows-user-pool-client
Includi per indicare che il client è autorizzato a seguire il protocollo OAuth durante l'interazione con i pool di utenti di 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-1
Output di esempio
{ "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
Il pool di utenti è ora pronto per fornire e autenticare i token di accesso. In questo esempio, l'URL del server di autorizzazione è
https://cognito-idp.
.us-east-1
.amazonaws.com/us-east-1_QLEXAMPLE
/.well-known/jwks.json -
Prova la configurazione.
$
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
"Output di esempio
{ "access_token":"eyJraWQiOiJGQ0VaRFpJUUptT3NSaW41MmtqaDdEbTZYb0RnSTQ5b2VUT0cxUUI1Q2VJPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiZGN2LXNlc3Npb24tbWFuYWdlclwvcGVybWlzc2lvbnMiLCJhdXRoX3RpbWUiOjE2MDI1MTMyODMsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy13ZXN0LTIuYW1hem9uYXdzLmNvbVwvdXMtd2VzdC0yX1FMZTA3SU9GViIsImV4cCI6MTYwMjUxNjg4MywiaWF0IjoxNjAyNTEzMjgzLCJ2ZXJzaW9uIjoyLCJqdGkiOiIyMDk2YTg4NS04YWQ0LTRmYjgtYjI2Mi1hMmNkNDk0OGZjNjYiLCJjbGllbnRfaWQiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCJ9.ZLZpS4CiiLq1X_VSm911hNT4g8A0FKZXScVJyyV0ijcyOfUOBcpgSMGqJagLYORFuYwLS5c7g4eO04wIwnw21ABGIDcOMElDPCJkrzjfLEPS_eyK3dNmlXDEvdS-Zkfi0HIDsd6audjTXKzHlZGScr6ROdZtId5dThkpEZiSx0YwiiWe9crAlqoazlDcCsUJHIXDtgKW64pSj3-uQQGg1Jv_tyVjhrA4JbD0k67WS2V9NW-uZ7t4zwwaUmOi3KzpBMi54fpVgPaewiVlUm_aS4LUFcWT6hVJjiZF7om7984qb2gOa14iZxpXPBJTZX_gtG9EtvnS9uW0QygTJRNgsw", "expires_in":3600, "token_type":"Bearer" }
-
Registra il server di autorizzazione esterno da utilizzare con il broker utilizzando ilregister-auth-server comando.
$
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
Gli sviluppatori ora possono utilizzare il server per richiedere i token di accesso. Quando richiedi i token di accesso, fornisci l'ID client, il segreto del client e l'URL del server generati qui. Per ulteriori informazioni sulla richiesta di token di accesso, consulta Creare, ottenere un token di accesso ed effettuare una richiesta API nella Guida per gli sviluppatori di NICE DCV Session Manager.