Configurazione di un server di autorizzazione esterno - NICEDCVGestore delle sessioni

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
  1. 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 pooldcv-session-manager-client-app e lo creiamo inus-east-1.

    $ aws cognito-idp create-user-pool --pool-name dcv-session-manager-client-app --region us-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 questouserPoolId dato poiché sarà necessario nella fase successiva.

  2. 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 nomeuserPoolId 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 --domain mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE --user-pool-id us-east-1_QLEXAMPLE --region us-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://domain_name.auth.region.amazoncognito.com. In questo esempio, il dominio del pool di utenti èhttps://mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE.auth.us-east-1.amazoncognito.com.

  3. Creazione di un client pool di utenti Usa il create-user-pool-clientcomando e specifica il pooluserPoolId di utenti che hai creato, un nome per il client e la regione in cui crearlo. Inoltre, includi l'--generate-secretopzione 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-id us-east-1_QLEXAMPLE --client-name dcv-session-manager-client-app --generate-secret --region us-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 dellaClientId eClientSecret. Dovrai fornire queste informazioni agli sviluppatori quando richiederanno i token di accesso per le richieste API.

  4. 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 nomeuserPoolId 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, utilizziamodcv-session-manager come identificatore e nome esm_scope come nome dell'ambito.

    $ 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

    Output di esempio

    { "ResourceServer": { "UserPoolId": "us-east-1_QLEXAMPLE", "Identifier": "dcv-session-manager", "Name": "dcv-session-manager", "Scopes": [ { "ScopeName": "sm_scope", "ScopeDescription": "sm_scope" }] } }
  5. Aggiorna il client di utenti.

    Utilizza il comando update-user-pool-client. Specificare il nomeuserPoolId 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-clientIncludi 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-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

    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.

  6. Prova la configurazione.

    $ 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"

    Output di esempio

    { "access_token":"eyJraWQiOiJGQ0VaRFpJUUptT3NSaW41MmtqaDdEbTZYb0RnSTQ5b2VUT0cxUUI1Q2VJPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiZGN2LXNlc3Npb24tbWFuYWdlclwvcGVybWlzc2lvbnMiLCJhdXRoX3RpbWUiOjE2MDI1MTMyODMsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy13ZXN0LTIuYW1hem9uYXdzLmNvbVwvdXMtd2VzdC0yX1FMZTA3SU9GViIsImV4cCI6MTYwMjUxNjg4MywiaWF0IjoxNjAyNTEzMjgzLCJ2ZXJzaW9uIjoyLCJqdGkiOiIyMDk2YTg4NS04YWQ0LTRmYjgtYjI2Mi1hMmNkNDk0OGZjNjYiLCJjbGllbnRfaWQiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCJ9.ZLZpS4CiiLq1X_VSm911hNT4g8A0FKZXScVJyyV0ijcyOfUOBcpgSMGqJagLYORFuYwLS5c7g4eO04wIwnw21ABGIDcOMElDPCJkrzjfLEPS_eyK3dNmlXDEvdS-Zkfi0HIDsd6audjTXKzHlZGScr6ROdZtId5dThkpEZiSx0YwiiWe9crAlqoazlDcCsUJHIXDtgKW64pSj3-uQQGg1Jv_tyVjhrA4JbD0k67WS2V9NW-uZ7t4zwwaUmOi3KzpBMi54fpVgPaewiVlUm_aS4LUFcWT6hVJjiZF7om7984qb2gOa14iZxpXPBJTZX_gtG9EtvnS9uW0QygTJRNgsw", "expires_in":3600, "token_type":"Bearer" }
  7. 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.