기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
권한 부여 서버는 클라이언트 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 요청에 대한 액세스 토큰을 요청할 때 사용할 수 있도록 이 정보를 제공해야 합니다. -
사용자 풀에 사용할 새로운 OAuth2.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 요청을 참조하세요.