Konfiguration eines externen Autorisierungsservers - Amazon DCV-Sitzungsmanager

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfiguration eines externen Autorisierungsservers

Der Autorisierungsserver ist der Server, der für die Authentifizierung und Autorisierung des Clients SDKs und der Agenten verantwortlich ist.

Standardmäßig verwendet Session Manager den Broker als Autorisierungsserver, um OAuth 2.0-Zugriffstoken für Clients SDKs und Softwareanweisungen für Agenten zu generieren. Wenn Sie den Broker als Autorisierungsserver verwenden, ist keine zusätzliche Konfiguration erforderlich.

Sie können Session Manager so konfigurieren, dass Amazon Cognito anstelle des Brokers als externen Autorisierungsserver verwendet wird. Weitere Informationen zu Amazon Cognito finden Sie im Amazon Cognito Developer Guide.

So verwenden Sie Amazon Cognito als Autorisierungsserver
  1. Erstellen Sie einen neuen Amazon Cognito Cognito-Benutzerpool. Weitere Informationen zu Benutzerpools finden Sie unter Funktionen von Amazon Cognito im Amazon Cognito Developer Guide.

    Verwenden Sie den create-user-poolBefehl und geben Sie einen Poolnamen und die Region an, in der er erstellt werden soll.

    In diesem Beispiel geben wir dem Pool einen Namen dcv-session-manager-client-app und erstellen ihn inus-east-1.

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

    Beispielausgabe

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

    Notieren Sie sich dasuserPoolId, Sie werden es im nächsten Schritt benötigen.

  2. Erstellen Sie eine neue Domain für Ihren Benutzerpool. Verwenden Sie den create-user-pool-domainBefehl und geben Sie einen Domänennamen und den Namen userPoolId des Benutzerpools an, den Sie im vorherigen Schritt erstellt haben.

    In diesem Beispiel lautet der Domainname mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE und wir erstellen ihn 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

    Beispielausgabe

    { "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": {} } }

    Das Format der Benutzerpool-Domäne lautet wie folgt:https://domain_name.auth.region.amazoncognito.com. In diesem Beispiel lautet die Benutzerpool-Domänehttps://mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE.auth.us-east-1.amazoncognito.com.

  3. Erstellen Sie einen Benutzerpool-Client. Verwenden Sie den create-user-pool-clientBefehl und geben Sie den userPoolId Benutzerpool an, den Sie erstellt haben, einen Namen für den Client und die Region, in der er erstellt werden soll. Fügen Sie außerdem die --generate-secret Option hinzu, mit der Sie angeben können, dass Sie ein Geheimnis für den Benutzerpool-Client generieren möchten, der gerade erstellt wird.

    In diesem Fall lautet der Kundenname dcv-session-manager-client-app und wir erstellen ihn in der us-east-1 Region.

    $ 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

    Beispielausgabe

    { "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 } }
    Anmerkung

    Notieren Sie sich das ClientId undClientSecret. Sie müssen diese Informationen den Entwicklern zur Verfügung stellen, wenn sie Zugriffstoken für die API-Anfragen anfordern.

  4. Erstellen Sie einen neuen OAuth2 2.0-Ressourcenserver für den Benutzerpool. Ein Ressourcenserver ist ein Server für zugriffsgeschützte Ressourcen. Er verarbeitet authentifizierte Anfragen nach Zugriffstoken.

    Verwenden Sie den create-resource-serverBefehl und geben Sie den userPoolId Benutzerpool, eine eindeutige Kennung und einen Namen für den Ressourcenserver, den Bereich und die Region an, in der er erstellt werden soll.

    In diesem Beispiel verwenden wir dcv-session-manager als Bezeichner und Namen sowie sm_scope als Bereichsnamen und Beschreibung.

    $ 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

    Beispielausgabe

    { "ResourceServer": { "UserPoolId": "us-east-1_QLEXAMPLE", "Identifier": "dcv-session-manager", "Name": "dcv-session-manager", "Scopes": [ { "ScopeName": "sm_scope", "ScopeDescription": "sm_scope" }] } }
  5. Aktualisieren Sie den Benutzerpool-Client.

    Verwenden Sie den update-user-pool-client-Befehl. Geben Sie userPoolId den Benutzerpool, den ClientId des Benutzerpool-Clients und die Region an. Geben Sie für client_credentials an--allowed-o-auth-flows, dass der Client mithilfe einer Kombination aus einer Client-ID und einem geheimen Client-Schlüssel Zugriffstoken vom Token-Endpunkt abrufen soll. Geben Sie für --allowed-o-auth-scopes die Ressourcenserver-ID und den Bereichsnamen wie folgt an:resource_server_identifier/scope_name. Fügen Sie das ein, --allowed-o-auth-flows-user-pool-client um anzugeben, dass der Client bei der Interaktion mit Cognito-Benutzerpools OAuth das Protokoll befolgen darf.

    $ 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

    Beispielausgabe

    { "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 } }
    Anmerkung

    Der Benutzerpool ist jetzt bereit, Zugriffstoken bereitzustellen und zu authentifizieren. In diesem Beispiel lautet https://cognito-idp.us-east-1.amazonaws.com/us-east-1_QLEXAMPLE/.well-known/jwks.json die URL für den Autorisierungsserver.

  6. Testen Sie die Konfiguration.

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

    Beispielausgabe

    { "access_token":"eyJraWQiOiJGQ0VaRFpJUUptT3NSaW41MmtqaDdEbTZYb0RnSTQ5b2VUT0cxUUI1Q2VJPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiZGN2LXNlc3Npb24tbWFuYWdlclwvcGVybWlzc2lvbnMiLCJhdXRoX3RpbWUiOjE2MDI1MTMyODMsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy13ZXN0LTIuYW1hem9uYXdzLmNvbVwvdXMtd2VzdC0yX1FMZTA3SU9GViIsImV4cCI6MTYwMjUxNjg4MywiaWF0IjoxNjAyNTEzMjgzLCJ2ZXJzaW9uIjoyLCJqdGkiOiIyMDk2YTg4NS04YWQ0LTRmYjgtYjI2Mi1hMmNkNDk0OGZjNjYiLCJjbGllbnRfaWQiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCJ9.ZLZpS4CiiLq1X_VSm911hNT4g8A0FKZXScVJyyV0ijcyOfUOBcpgSMGqJagLYORFuYwLS5c7g4eO04wIwnw21ABGIDcOMElDPCJkrzjfLEPS_eyK3dNmlXDEvdS-Zkfi0HIDsd6audjTXKzHlZGScr6ROdZtId5dThkpEZiSx0YwiiWe9crAlqoazlDcCsUJHIXDtgKW64pSj3-uQQGg1Jv_tyVjhrA4JbD0k67WS2V9NW-uZ7t4zwwaUmOi3KzpBMi54fpVgPaewiVlUm_aS4LUFcWT6hVJjiZF7om7984qb2gOa14iZxpXPBJTZX_gtG9EtvnS9uW0QygTJRNgsw", "expires_in":3600, "token_type":"Bearer" }
  7. Registrieren Sie den externen Autorisierungsserver für die Verwendung mit dem Broker, indem Sie den register-auth-server Befehl verwenden.

    $ 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

Entwickler können jetzt den Server verwenden, um Zugriffstoken anzufordern. Wenn Sie Zugriffstoken anfordern, geben Sie die Client-ID, den geheimen Client-Schlüssel und die hier generierte Server-URL an. Weitere Informationen zum Anfordern von Zugriffstoken finden Sie unter Erstellen, Zugriffstoken erstellen und API-Anfrage stellen im Amazon DCV Session Manager Developer Guide.