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
-
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-namedcv-session-manager-client-app
--regionus-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 das
userPoolId
, Sie werden es im nächsten Schritt benötigen. -
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 --domainmydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE
--user-pool-idus-east-1_QLEXAMPLE
--regionus-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://
. In diesem Beispiel lautet die Benutzerpool-Domänedomain_name
.auth.region
.amazoncognito.comhttps://mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE.auth.us-east-1.amazoncognito.com
. -
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 derus-east-1
Region.$
aws cognito-idp create-user-pool-client --user-pool-idus-east-1_QLEXAMPLE
--client-namedcv-session-manager-client-app
--generate-secret --regionus-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. -
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 sowiesm_scope
als Bereichsnamen und Beschreibung.$
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
Beispielausgabe
{ "ResourceServer": { "UserPoolId": "us-east-1_QLEXAMPLE", "Identifier": "dcv-session-manager", "Name": "dcv-session-manager", "Scopes": [ { "ScopeName": "sm_scope", "ScopeDescription": "sm_scope" }] } }
-
Aktualisieren Sie den Benutzerpool-Client.
Verwenden Sie den update-user-pool-client-Befehl. Geben Sie
userPoolId
den Benutzerpool, denClientId
des Benutzerpool-Clients und die Region an. Geben Sie fürclient_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:
. Fügen Sie das ein,resource_server_identifier
/scope_name
--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-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
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.
die URL für den Autorisierungsserver.us-east-1
.amazonaws.com/us-east-1_QLEXAMPLE
/.well-known/jwks.json -
Testen Sie die Konfiguration.
$
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
"Beispielausgabe
{ "access_token":"eyJraWQiOiJGQ0VaRFpJUUptT3NSaW41MmtqaDdEbTZYb0RnSTQ5b2VUT0cxUUI1Q2VJPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiZGN2LXNlc3Npb24tbWFuYWdlclwvcGVybWlzc2lvbnMiLCJhdXRoX3RpbWUiOjE2MDI1MTMyODMsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy13ZXN0LTIuYW1hem9uYXdzLmNvbVwvdXMtd2VzdC0yX1FMZTA3SU9GViIsImV4cCI6MTYwMjUxNjg4MywiaWF0IjoxNjAyNTEzMjgzLCJ2ZXJzaW9uIjoyLCJqdGkiOiIyMDk2YTg4NS04YWQ0LTRmYjgtYjI2Mi1hMmNkNDk0OGZjNjYiLCJjbGllbnRfaWQiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCJ9.ZLZpS4CiiLq1X_VSm911hNT4g8A0FKZXScVJyyV0ijcyOfUOBcpgSMGqJagLYORFuYwLS5c7g4eO04wIwnw21ABGIDcOMElDPCJkrzjfLEPS_eyK3dNmlXDEvdS-Zkfi0HIDsd6audjTXKzHlZGScr6ROdZtId5dThkpEZiSx0YwiiWe9crAlqoazlDcCsUJHIXDtgKW64pSj3-uQQGg1Jv_tyVjhrA4JbD0k67WS2V9NW-uZ7t4zwwaUmOi3KzpBMi54fpVgPaewiVlUm_aS4LUFcWT6hVJjiZF7om7984qb2gOa14iZxpXPBJTZX_gtG9EtvnS9uW0QygTJRNgsw", "expires_in":3600, "token_type":"Bearer" }
-
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.