사용자 풀 앱 클라이언트 구성 - Amazon Cognito

사용자 풀 앱 클라이언트 구성

사용자 풀을 생성한 이후 앱 클라이언트를 구성하여 사용자 가입 및 로그인에 대해 내장 웹 페이지를 사용할 수 있습니다. 용어는 앱 클라이언트 설정 용어를 참조하세요.

Original console
  1. Amazon Cognito 콘솔로 이동합니다. 메시지가 표시되면 AWS 자격 증명을 입력합니다.

  2. 사용자 풀 관리(Manage User Pools)를 선택합니다.

  3. 목록에서 기존 사용자 풀을 선택하거나 사용자 풀을 생성합니다.

  4. 페이지 왼쪽에 있는 탐색 모음의 [일반 설정(General settings)]에서 [앱 클라이언트(App clients)]를 선택합니다.

  5. 앱 클라이언트 추가(Add an app client)를 선택합니다.

  6. 앱 이름을 입력합니다.

  7. 인증 흐름에서 필요한 경우를 제외하고 옵션 클라이언트 보안키 생성을 지웁니다. 클라이언트 암호는 클라이언트 암호를 보호할 수 있는 서버 측 구성요소가 있는 애플리케이션에서 사용됩니다.

  8. (선택 사항) 토큰 만료 설정을 변경합니다.

  9. 인증 흐름 구성(Auth Flows Configuration) 옵션을 선택합니다. 자세한 내용은 사용자 풀 인증 흐름을 참조하세요.

  10. 보안 구성(Security configuration)을 선택합니다. [사용(Enabled)]을 선택하는 것이 좋습니다.

  11. (선택 사항) [속성 읽기 및 쓰기 권한 설정(Set attribute read and write permissions)]을 선택합니다.

  12. 앱 클라이언트 생성(Create app client)을 선택합니다.

  13. 앱 클라이언트 ID를 기록해 둡니다.

  14. 풀 세부 정보로 돌아가기를 선택합니다.

New console
  1. Amazon Cognito 콘솔로 이동합니다. 메시지가 표시되면 AWS 자격 증명을 입력합니다.

  2. [사용자 풀(User Pools)]을 선택합니다.

  3. 목록에서 기존 사용자 풀을 선택하거나 사용자 풀을 생성합니다.

  4. [앱 통합(App integration)] 탭을 선택합니다.

  5. [앱 클라이언트(App clients)]에서 [앱 클라이언트 생성(Create an app client)]을 선택합니다.

  6. [앱 유형(App type)]에서 [퍼블릭 클라이언트(Public client)], [기밀 클라이언트(Confidential client)] 또는 [기타(Other)]를 선택합니다. [퍼블릭 클라이언트(Public client)]는 일반적으로 사용자 디바이스에서 작동하며, 인증되지 않은 API와 토큰 인증 API를 사용합니다. [기밀 클라이언트(Confidential client)]는 일반적으로 클라이언트 암호와 API 자격 증명으로 신뢰하는 중앙 서버의 앱에서 작동하며, 권한 부여 헤더와 AWS Identity and Access Management 자격 증명을 사용하여 요청에 서명합니다. 사용 사례가 [퍼블릭 클라이언트(Public client)] 또는 [기밀 클라이언트(Confidential client)]에 맞게 미리 구성된 앱 클라이언트 설정과 다른 경우 [기타(Other)]를 선택합니다.

  7. [앱 클라이언트 이름(App client name)]을 입력합니다.

  8. 앱 클라이언트에서 허용할 [인증 흐름(Authentication flows)]을 선택합니다. 자세한 내용은 사용자 풀 인증 흐름을 참조하세요.

  9. Authentication flow session duration(인증 흐름 세션 기간)을 구성합니다. 세션 토큰이 만료되기 전에 사용자가 각 인증 챌린지를 완료해야 하는 시간입니다.

  10. (선택 사항) 토큰 만료를 구성합니다.

    1. 앱 클라이언트의 [새로 고침 토큰 만료(Refresh token expiration)]를 지정합니다. 기본값은 30일입니다. 이 값을 1시간에서 10년 사이의 값으로 변경할 수 있습니다.

    2. 앱 클라이언트의 [액세스 토큰 만료(Access token expiration)]를 지정합니다. 기본값은 1시간입니다. 이 값을 5분에서 24시간 사이의 값으로 변경할 수 있습니다.

    3. 앱 클라이언트의 [ID 토큰 만료(ID token expiration)]를 지정합니다. 기본값은 1시간입니다. 이 값을 5분에서 24시간 사이의 값으로 변경할 수 있습니다.

      중요

      호스트된 UI를 사용하여 1시간 미만의 토큰 수명을 구성할 경우 사용자는 현재 1시간으로 고정된 세션 쿠키 기간에 따라 토큰을 사용할 수 있습니다.

  11. [클라이언트 암호 생성(Generate client secret)]을 선택하여 Amazon Cognito에서 클라이언트 암호를 자동으로 생성하도록 합니다. 클라이언트 암호는 일반적으로 기밀 클라이언트와 연결됩니다.

  12. [토큰 철회 사용(Enable token revocation)]에서 이 앱 클라이언트에 토큰 철회를 사용할지 여부를 선택합니다. 사용할 경우 Amazon Cognito가 발급하는 토큰의 크기가 늘어납니다. 자세한 내용은 토큰 철회를 참조하세요.

  13. [사용자 존재를 나타내는 오류 메시지 방지(Prevent error messages that reveal user existence)]에서 이 앱 클라이언트에 사용자 존재를 나타내는 오류 메시지를 표시하지 않을지 여부를 선택합니다. Amazon Cognito는 존재하지 않는 사용자에 대한 로그인 요청에 사용자 이름이나 암호가 잘못되었다는 일반적인 메시지로 응답합니다.

  14. (선택 사항) 이 앱 클라이언트에 대한 [속성 읽기 및 쓰기 권한(Attribute read and write permissions)]을 구성합니다. 앱 클라이언트는 사용자 풀 속성 스키마의 제한된 하위 집합에 대해서만 읽기 및 쓰기 권한을 가질 수 있습니다. 자세한 내용은 속성 권한 및 범위를 참조하세요.

  15. 생성(Create)을 선택합니다.

  16. [클라이언트 ID(Client id)]를 적어 둡니다. 클라이언트 ID는 가입 및 로그인 요청에서 앱 클라이언트를 식별합니다.

AWS CLI를 사용하여 사용자 풀 앱 클라이언트를 업데이트, 생성, 설명 및 삭제할 수 있습니다.

"MyUserPoolID" 및 "MyAppClientID"를 이 예제의 사용자 풀 및 앱 클라이언트 ID 값으로 대체합니다. 마찬가지로 사용자의 파라미터 값이 이 예제에서 사용한 값과 다를 수 있습니다.

참고

CLI가 원격 파라미터 파일로 처리하지 않도록 콜백 및 로그아웃 URL에 JSON 형식을 사용합니다.

--callback-urls "["https://example.com"]"

--logout-urls "["https://example.com"]"

사용자 풀 앱 클라이언트 업데이트(AWS CLI 및 AWS API)

AWS CLI에서 다음 명령을 입력합니다.

aws cognito-idp update-user-pool-client --user-pool-id "MyUserPoolID" --client-id "MyAppClientID" --allowed-o-auth-flows-user-pool-client --allowed-o-auth-flows "code" "implicit" --allowed-o-auth-scopes "openid" --callback-urls "["https://example.com"]" --supported-identity-providers "["MySAMLIdP", "LoginWithAmazon"]"

명령이 성공할 경우 AWS CLI가 확인을 반환합니다.

{ "UserPoolClient": { "ClientId": "MyClientID", "SupportedIdentityProviders": [ "LoginWithAmazon", "MySAMLIdP" ], "CallbackURLs": [ "https://example.com" ], "AllowedOAuthScopes": [ "openid" ], "ClientName": "Example", "AllowedOAuthFlows": [ "implicit", "code" ], "RefreshTokenValidity": 30, "AuthSessionValidity": 3, "CreationDate": 1524628110.29, "AllowedOAuthFlowsUserPoolClient": true, "UserPoolId": "MyUserPoolID", "LastModifiedDate": 1530055177.553 } }

자세한 내용은 다음 AWS CLI 명령 레퍼런스를 참조하세요. update-user-pool-client.

AWS API: UpdateUserPoolClient

사용자 풀 앱 클라이언트 생성(AWS CLI 및 AWS API)

aws cognito-idp create-user-pool-client --user-pool-id MyUserPoolID --client-name myApp

자세한 내용은 다음 AWS CLI 명령 레퍼런스를 참조하세요. create-user-pool-client.

AWS API: CreateUserPoolClient

사용자 풀 앱 클라이언트에 대한 정보 가져오기(AWS CLI 및 AWS API)

aws cognito-idp describe-user-pool-client --user-pool-id MyUserPoolID --client-id MyClientID

자세한 내용은 다음 AWS CLI 명령 레퍼런스를 참조하세요. describe-user-pool-client.

AWS API: DescribeUserPoolClient

사용자 풀의 모든 앱 클라이언트 정보 나열(AWS CLI 및 AWS API)

aws cognito-idp list-user-pool-clients --user-pool-id "MyUserPoolID" --max-results 3

자세한 내용은 다음 AWS CLI 명령 레퍼런스를 참조하세요. list-user-pool-clients.

AWS API: ListUserPoolClients

사용자 풀 앱 클라이언트 삭제(AWS CLI 및 AWS API)

aws cognito-idp delete-user-pool-client --user-pool-id "MyUserPoolID" --client-id "MyAppClientID"

자세한 내용은 다음 AWS CLI 명령 레퍼런스를 참조하세요. delete-user-pool-client.

AWS API: DeleteUserPoolClient

앱 클라이언트 설정 용어

다음 용어 및 정의는 앱 클라이언트를 구성하는 데 도움이 될 수 있습니다.

활성화된 자격 증명 공급자

사용자를 인증할 자격 증명 공급자(IdP)를 선택할 수 있습니다. 이 서비스는 사용자 풀로 수행할수 있고 또는 Facebook 같은 타사가 수행할 수도 있습니다. IdP를 사용하기 전에 이것을 활성화해야 합니다. 다중 IdP를 활성화할 수도 있지만 최소한 한 개는 활성화해야 합니다. 외부 IdP 사용에 대한 자세한 내용은 서드 파티를 통한 사용자 풀 로그인 추가 섹션을 참조하세요.

콜백 URL(여러 개 가능)

콜백 URL은 로그인 성공 후 사용자가 리디렉션되는 위치를 나타냅니다. 하나 이상의 콜백 URL을 선택합니다. 콜백 URL은 다음을 수행해야 합니다.

  • 절대 URI이어야 합니다.

  • 클라이언트로 미리 등록되어야 합니다.

  • 조각 구성요소가 없어야 합니다.

OAuth 2.0 - 리디렉션 엔드포인트를 참조하세요.

테스트 목적으로만 http://localhost를 사용하는 경우를 제외하고 Amazon Cognito에서는 HTTP가 아니라 HTTPS가 필요합니다.

myapp://example 같은 앱 콜백 URL도 지원됩니다.

로그아웃 URL(여러 개 가능)

로그아웃 URL은 로그아웃 후 사용자가 리디렉션되는 위치를 나타냅니다.

허용된 OAuth 흐름

인증 코드 권한 부여 흐름은 응답으로 권한 부여 코드를 제공하는 코드 허용 흐름을 시작합니다. 이 코드는 Token 엔드포인트를 통해 액세스 토큰과 교환할 수 있습니다. 토큰은 최종 사용자에게 직접 노출되지 않기 때문에 침해될 가능성이 낮습니다. 하지만 사용자 풀 토큰에 대한 인증 코드를 교환하려면 백엔드에 사용자 지정 애플리케이션이 필요합니다.

참고

보안상의 이유로 모바일 앱에서는 PKCE와 함께 인증 코드 권한 부여 흐름만 사용하는 것이 좋습니다.

클라이언트는 [암시적 권한 부여(Implicit grant)] 흐름을 통해 권한 부여 엔드포인트에서 직접 액세스 토큰(및 범위에 따라 선택 사항으로 ID 토큰)을 가져올 수 있습니다. 앱이 [인증 코드 권한 부여(Authorization code grant)] 흐름을 시작할 수 없는 경우 이 흐름을 선택합니다. 자세한 내용은 OAuth 2.0 사양을 참조하세요.

Authorization code grant(인증 코드 권한 부여)Implicit code grant(암시적 코드 부여)를 모두 활성화하고 각각을 필요한 경우 사용할 수 있습니다.

Client credentials(클라이언트 자격 증명) 흐름은 기계 간 커뮤니케이션에 사용됩니다. 이 흐름을 사용하여 고유한 리소스에 액세스하기 위한 액세스 토큰을 요청할 수 있습니다. 앱이 사용자를 대신해서가 아니라 자체적으로 액세스 토큰을 요청하는 경우 이 흐름을 선택합니다.

참고

클라이언트 자격 증명 흐름은 사용자 대신 사용되지 않으므로, 사용자 지정 범위만 이 흐름과 함께 사용됩니다. 사용자 지정 범위는 자체 리소스 서버에 대해 정의할 수 있습니다. 사용자 풀의 리소스 서버 정의 섹션을 참조하세요.

허용된 OAuth 범위

다음 OAuth 범위에서 하나 이상을 선택하여 액세스 토큰에 대해 요청될 수 있는 액세스 권한을 지정합니다.

  • phone 범위는 phone_numberphone_number_verified 클레임에 대한 액세스 권한을 부여합니다. 이 범위는 openid 범위를 통해서만 요청할 수 있습니다.

  • email 범위는 emailemail_verified 클레임에 대한 액세스 권한을 부여합니다. 이 범위는 openid 범위를 통해서만 요청할 수 있습니다.

  • openid 범위는 ID 토큰에서 클라이언트가 읽을 수 있는 모든 사용자 속성을 반환합니다. 클라이언트가 openid 범위를 요청하지 않으면 ID 토큰이 반환되지 않습니다.

  • aws.cognito.signin.user.admin 범위는 액세스 토큰이 필요한 UpdateUserAttributesVerifyUserAttribute와 같은 Amazon Cognito 사용자 풀 API 작업에 대한 액세스 권한을 부여합니다.

  • profile 범위는 클라이언트가 읽을 수 있는 모든 사용자 속성에 대한 액세스 권한을 부여합니다. 이 범위는 openid 범위를 통해서만 요청할 수 있습니다.

허용된 사용자 지정 범위

사용자 지정 범위는 리소스 서버에서 자체 리소스 서버에 대해 정의할 수 있습니다. 형식은 resource-server-identifier/scope입니다. 사용자 풀의 리소스 서버 정의 섹션을 참조하세요.

OAuth 범위에 대한 자세한 내용은 표준 OIDC 범위 목록을 참조하세요.