翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
認可サーバーとは、クライアント SDK とエージェントの認証および認可を行うサーバーです。
セッションマネージャーでは、デフォルトで、ブローカーを認可サーバーとして使用して、クライアント SDK の OAuth 2.0 アクセストークンと、エージェント用のソフトウェアステートメントを生成します。ブローカーを認可サーバーとして使用する場合、追加の設定は必要ありません。
外部認可サーバーとしてブローカーではなく Amazon Cognito を使用するようにセッションマネージャーを設定することができます。Amazon Cognito の詳細については、「Amazon Cognito デベロッパーガイド」を参照してください。
Amazon Cognito を認可サーバーとして使用するには
-
Amazon Cognito ユーザープールを作成します。詳細については、「Amazon Cognito デベロッパーガイド」の「Amazon Cognito ユーザープール」を参照してください。
create-user-pool コマンドを入力し、プール名と、プールを作成するリージョンを指定します。
この例では、プールに
dcv-session-manager-client-app
という名前を付けて、us-east-1
でそれを作成します。$
aws cognito-idp create-user-pool --pool-namedcv-session-manager-client-app
--regionus-east-1
出力例
{ "UserPoolClient": { "UserPoolId": "us-east-1_QLEXAMPLE", "ClientName": "dcv-session-manager-client-app", "ClientId": "15hhd8jij74hf32f24uEXAMPLE", "LastModifiedDate": 1602510048.054, "CreationDate": 1602510048.054, "RefreshTokenValidity": 30, "AllowedOAuthFlowsUserPoolClient": false } }
次のステップで必要になるため、
userPoolId
を書きとめておきます。 -
ユーザープールの新しいドメインを作成します。create-user-pool-domain コマンドを使用して、前のステップで作成したユーザープールのドメイン名と
userPoolId
を指定します。この例では、ドメイン名を
mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE
とし、us-east-1
でそれを作成します。$
aws cognito-idp create-user-pool-domain --domainmydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE
--user-pool-idus-east-1_QLEXAMPLE
--regionus-east-1
出力例
{ "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": {} } }
ユーザープールドメインの形式は
https://
です。この例では、ユーザープールのドメイン名はdomain_name
.auth.region
.amazoncognito.comhttps://mydomain-544fa30f-c0e5-4a02-8d2a-a3761EXAMPLE.auth.us-east-1.amazoncognito.com
です。 -
ユーザープールのクライアントを作成します。 create-user-pool-client コマンドを使用して、作成したユーザープールの
userPoolId
、クライアント用の名前、これを作成するリージョンを指定します。さらに、作成するユーザープールクライアントのシークレットを生成するかどうかを指定する--generate-secret
オプションを含めます。この場合、クライアント名は
dcv-session-manager-client-app
で、us-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-1
出力例
{ "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 } }
注記
ClientId
とClientSecret
を書きとめておきます。デベロッパーが API リクエストのアクセストークンをリクエストしたときに、この情報の提供が必要になります。 -
ユーザープール用の新しい OAuth 2.0 リソースサーバーを作成します。リソースサーバーは、アクセス保護されたリソース用のサーバーです。アクセストークンの認証リクエストが処理されます。
create-resource-server コマンドを使用して、ユーザープールの
userPoolId
、リソースサーバーの一意の識別子と名前、スコープ、ユーザープールを作成するリージョンを指定します。この例では、
dcv-session-manager
を識別子と名前として使用し、sm_scope
をスコープの名前と説明として使用します。$
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
出力例
{ "ResourceServer": { "UserPoolId": "us-east-1_QLEXAMPLE", "Identifier": "dcv-session-manager", "Name": "dcv-session-manager", "Scopes": [ { "ScopeName": "sm_scope", "ScopeDescription": "sm_scope" }] } }
-
ユーザープールのクライアントを更新します。
update-user-pool-client コマンドを使用します。ユーザープールの
userPoolId
、ユーザープールのクライアントのClientId
、リージョンを指定します。--allowed-o-auth-flows
の場合、クライアント ID とクライアントシークレットを併用することで、クライアントがトークンエンドポイントからアクセストークンを取得することを示すためにclient_credentials
を指定します。--allowed-o-auth-scopes
の場合、リソースサーバー識別子とスコープ名として
を指定します。クライアントが Cognito ユーザープールとの通信時に OAuth プロトコルに従うことを許可されていることを示すためにresource_server_identifier
/scope_name
--allowed-o-auth-flows-user-pool-client
を含めます。$
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
出力例
{ "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 } }
注記
これで、ユーザープールによるアクセストークンの提供と認証を行う準備が整いました。この例では、認可サーバーの URL は
https://cognito-idp.
です。us-east-1
.amazonaws.com/us-east-1_QLEXAMPLE
/.well-known/jwks.json -
設定をテストします。
$
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
"出力例
{ "access_token":"eyJraWQiOiJGQ0VaRFpJUUptT3NSaW41MmtqaDdEbTZYb0RnSTQ5b2VUT0cxUUI1Q2VJPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiZGN2LXNlc3Npb24tbWFuYWdlclwvcGVybWlzc2lvbnMiLCJhdXRoX3RpbWUiOjE2MDI1MTMyODMsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy13ZXN0LTIuYW1hem9uYXdzLmNvbVwvdXMtd2VzdC0yX1FMZTA3SU9GViIsImV4cCI6MTYwMjUxNjg4MywiaWF0IjoxNjAyNTEzMjgzLCJ2ZXJzaW9uIjoyLCJqdGkiOiIyMDk2YTg4NS04YWQ0LTRmYjgtYjI2Mi1hMmNkNDk0OGZjNjYiLCJjbGllbnRfaWQiOiIybDkyNzNocDZrMnV0NWN1Z2c5dWg4ZGx0cCJ9.ZLZpS4CiiLq1X_VSm911hNT4g8A0FKZXScVJyyV0ijcyOfUOBcpgSMGqJagLYORFuYwLS5c7g4eO04wIwnw21ABGIDcOMElDPCJkrzjfLEPS_eyK3dNmlXDEvdS-Zkfi0HIDsd6audjTXKzHlZGScr6ROdZtId5dThkpEZiSx0YwiiWe9crAlqoazlDcCsUJHIXDtgKW64pSj3-uQQGg1Jv_tyVjhrA4JbD0k67WS2V9NW-uZ7t4zwwaUmOi3KzpBMi54fpVgPaewiVlUm_aS4LUFcWT6hVJjiZF7om7984qb2gOa14iZxpXPBJTZX_gtG9EtvnS9uW0QygTJRNgsw", "expires_in":3600, "token_type":"Bearer" }
-
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
これで、デベロッパーがサーバーを使用してアクセストークンをリクエストできるようになりました。アクセストークンをリクエストするときは、ここで生成されたクライアント ID、クライアントシークレット、およびサーバー URL を提供します。アクセストークンのリクエストの詳細については、「Amazon DCV セッションマネージャーデベロッパーガイド」の「アクセストークンを取得して API リクエストを行う」を参照してください。