기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
앱 클라이언트를 사용한 애플리케이션별 설정
사용자 풀 앱 클라이언트는 Amazon Cognito로 인증되는 모바일 또는 웹 애플리케이션과 상호 작용하는 사용자 풀 내의 구성입니다. 앱 클라이언트는 인증된 작업과 인증되지 않은 API 작업을 호출하고 사용자 속성의 일부 또는 전부를 읽거나 수정할 수 있습니다. 등록, 로그인 및 암호 찾기 작업을 처리하려면 앱 클라이언트에 대해 앱이 자체 식별을 수행해야 합니다. 이러한 API 요청에는 앱 클라이언트 ID를 사용한 자체 식별 및 선택적 클라이언트 보안 암호로 권한 부여가 포함되어야 합니다. 권한이 부여된 클라이언트 앱만 이러한 인증되지 않은 작업을 호출할 수 있도록 앱 클라이언트 IDs 또는 보안 암호를 보호해야 합니다. 또한 자격 AWS 증명으로 인증된 API 요청에 서명하도록 앱을 구성하는 경우 사용자 검사로부터 자격 증명을 보호해야 합니다.
사용자 풀에 여러 앱 클라이언트를 생성할 수 있습니다. 앱 클라이언트는 앱의 코드 플랫폼 또는 사용자 풀의 별도 테넌트에 연결할 수 있습니다. 예를 들어 서버 측 애플리케이션에 대한 앱과 다른 Android 앱을 생성할 수 있습니다. 각 앱에는 고유한 앱 클라이언트 ID가 있습니다.
앱 클라이언트 수준에서 다음 사용자 풀 기능에 대한 설정을 적용할 수 있습니다.
-
호스팅된 UI IdPs, 권한 부여 유형, 콜백 URLs및 사용자 지정
앱 클라이언트 유형
Amazon Cognito 에서 앱 클라이언트를 생성할 때 표준 OAuth 클라이언트 유형 퍼블릭 클라이언트 및 기밀 클라이언트 를 기반으로 옵션을 미리 채울 수 있습니다. 기밀 클라이언트(confidential client)를 클라이언트 암호(client secret)와 함께 구성합니다. 클라이언트 유형에 대한 자세한 내용은 IETF RFC 6749 #2.1
- 퍼블릭 클라이언트(Public client)
-
퍼블릭 클라이언트는 브라우저 또는 모바일 디바이스에서 실행됩니다. 퍼블릭 클라이언트에는 신뢰할 수 있는 서버 측 리소스가 없으므로 클라이언트 암호가 없습니다.
- 기밀 클라이언트(Confidential client)
-
기밀 클라이언트에는 인증되지 않은 API 작업에 대해 클라이언트 보안 암호로 신뢰할 수 있는 서버 측 리소스가 있습니다. 앱은 백엔드 서버에서 데몬 또는 셸 스크립트로 실행될 수 있습니다.
- 클라이언트 암호(client secret)
-
클라이언트 암호는 앱 클라이언트에 대한 모든 API 요청에 앱이 사용해야 하는 고정 문자열입니다. 앱 클라이언트에는
client_credentials
를 부여할 클라이언트 암호가 있어야 합니다. 자세한 내용은 IETF RFC 6749 #2.3.1을 참조하세요. 앱을 생성한 후에는 보안 암호를 변경할 수 없습니다. 보안 암호를 교체하려는 경우 새 보안 암호로 새 앱을 생성할 수 있습니다. 앱을 삭제하여 해당 앱 클라이언트 ID를 사용하는 앱의 액세스를 차단할 수도 있습니다.
기밀 클라이언트와 클라이언트 암호를 공개 앱과 함께 사용할 수 있습니다. Amazon CloudFront 프록시를 사용하여 전송 SECRET_HASH
중인 를 추가합니다. 자세한 내용은 블로그에서 Amazon 프록시를 사용하여 Amazon Cognito용 퍼블릭 클라이언트 보호를 CloudFront
JSON 웹 토큰
Amazon Cognito 앱 클라이언트는 다음 유형의 JSON 웹 토큰(JWTs)을 발급할 수 있습니다.
- 자격 증명(ID) 토큰
-
사용자가 사용자 풀에서 인증되었음을 검증할 수 있는 명령문입니다. OpenID Connect(OIDC)는 OAuth 2.0에서 정의한 액세스 및 새로 고침 토큰 표준에 ID 토큰 사양을
추가했습니다. ID 토큰에는 앱이 사용자 프로필을 생성하고 리소스를 프로비저닝하는 데 사용할 수 있는 사용자 속성과 같은 자격 증명 정보가 들어 있습니다. 자세한 내용은 자격 증명(ID) 토큰 이해 섹션을 참조하세요. - 액세스 토큰
-
사용자 액세스 권한에 대한 검증 가능한 문입니다. 액세스 토큰에는 OIDC 및 2.0의 기능인 범위
OAuth 가 포함되어 있습니다. 앱은 백엔드 리소스에 범위를 제시하고 사용자 풀이 사용자 또는 머신에 의 데이터 API또는 자체 사용자 데이터에 액세스할 수 있는 권한을 부여했음을 증명할 수 있습니다. 사용자 지정 범위가 있는 액세스 토큰(주로 M2M client-credentials 권한 부여)은 리소스 서버에 대한 액세스를 승인합니다. 자세한 내용은 액세스 토큰 이해 섹션을 참조하세요. - 새로 고침 토큰
-
사용자 토큰이 만료될 때 앱이 사용자 풀에 제공할 수 있는 암호화된 초기 인증 문입니다. refresh-token 요청은 만료되지 않은 새 액세스 및 ID 토큰을 반환합니다. 자세한 내용은 새로 고침 토큰 이해 섹션을 참조하세요.
Amazon Cognito 콘솔
앱 클라이언트 용어
다음 용어는 Amazon Cognito 콘솔에서 사용할 수 있는 앱 클라이언트 속성입니다.
- 허용된 콜백 URLs
-
콜백은 로그인 성공 후 사용자가 리디렉션되는 위치를 URL 나타냅니다. 하나 이상의 콜백을 선택합니다URL. 콜백은 다음을 URL 수행해야 합니다.
-
절대 가 되세요URI.
-
클라이언트로 미리 등록되어야 합니다.
-
조각 구성요소가 없어야 합니다.
OAuth 2.0 - 리디렉션 엔드포인트 를
참조하세요. 테스트 목적으로만
http://localhost
를 사용하는 경우를 제외하고 Amazon Cognito에서는HTTP
가 아니라HTTPS
가 필요합니다.URLs 와 같은 앱 콜백도 지원
myapp://example
됩니다. -
- 허용된 로그아웃 URLs
-
로그아웃은 로그아웃 후 사용자가 리디렉션될 위치를 URL 나타냅니다.
- 속성 읽기 및 쓰기 권한
-
사용자 풀에는 각각 자체 앱 클라이언트 및 가 있는 많은 고객이 있을 수 있습니다 IdPs. 앱과 관련된 사용자 속성에 대해서만 읽기 및 쓰기 액세스 권한을 갖도록 앱 클라이언트를 구성할 수 있습니다. (M2M) 권한 부여와 같은 machine-to-machine 경우 사용자 속성에 대한 액세스 권한을 부여할 수 없습니다.
속성 읽기 및 쓰기 권한 구성 시 고려 사항
-
앱 클라이언트를 생성하고 속성 읽기 및 쓰기 권한을 사용자 지정하지 않으면 Amazon Cognito는 모든 사용자 풀 속성에 읽기 및 쓰기 권한을 부여합니다.
-
변경할 수 없는 사용자 지정 속성에 쓰기 액세스 권한을 부여할 수 있습니다. 사용자를 생성하거나 등록할 때 앱 클라이언트가 변경할 수 없는 속성에 값을 쓸 수 있습니다. 이후에는 사용자의 변경 불가능한 사용자 지정 속성에 값을 쓸 수 없습니다.
-
앱 클라이언트는 사용자 풀의 필수 속성에 대한 쓰기 권한을 가져야 합니다. Amazon Cognito 콘솔은 필수 속성을 쓰기 가능으로 자동 설정합니다.
-
앱 클라이언트가
email_verified
또는phone_number_verified
에 대한 쓰기 액세스 권한을 갖도록 허용할 수 없습니다. 사용자 풀 관리자는 이러한 값을 수정할 수 있습니다. 사용자는 속성 확인을 통해서만 이러한 속성의 값을 변경할 수 있습니다.
-
- 인증 흐름
-
앱 클라이언트에서 로그인을 허용하는 방법입니다. 앱은 사용자 이름과 암호로 인증, 보안 원격 암호(SRP), Lambda 트리거를 사용한 사용자 지정 인증 및 토큰 새로 고침을 지원할 수 있습니다. 보안 모범 사례로 인증을 SRP 기본 로그인 방법으로 사용합니다. 호스팅된 UI는 를 사용하여 에서 사용자에 자동으로 로그인합니다SRP.
- 사용자 지정 범위
-
사용자 지정 범위는 리소스 서버에서 자체 리소스 서버에 대해 정의할 수 있습니다. 형식은 입니다.
resource-server-identifier
/scope
. 를 참조하세요범위, M2M 및 리소스 서버 APIs 포함. - 기본 리디렉션 URI
-
사용자에 대한 인증 요청의
redirect_uri
파라미터를 타사 로 바꿉니다 IdPs. CreateUserPoolClient 또는 UpdateUserPoolClient API 요청의DefaultRedirectURI
파라미터를 사용하여 이 앱 클라이언트 설정을 구성합니다. 또한CallbackURLs
앱 클라이언트의 멤버여야 URL 합니다. Amazon Cognito는 다음과 같은 URL 경우에 인증된 세션을 이 로 리디렉션합니다. - 자격 증명 공급자
-
사용자 풀 외부 자격 증명 공급자(IdPs)의 일부 또는 전체를 선택하여 사용자를 인증할 수 있습니다. 앱 클라이언트는 사용자 풀의 로컬 사용자만 인증할 수도 있습니다. 앱 클라이언트에 IdP 추가 시 IdP에 대한 권한 부여 링크를 생성하여 호스팅 UI 로그인 페이지에 표시할 수 있습니다. 여러 를 할당할 수 IdPs있지만 하나 이상을 할당해야 합니다. 외부 를 사용하는 방법에 대한 자세한 내용은 섹션을 IdPs참조하세요서드 파티를 통한 사용자 풀 로그인 추가.
- OpenID Connect 범위
-
다음
OAuth
범위에서 하나 이상을 선택하여 액세스 토큰에 대해 요청될 수 있는 액세스 권한을 지정합니다.-
openid
범위는 사용자가 ID 토큰과 사용자의 고유 ID를 검색하고 싶어 한다고 선언합니다. 또한 요청의 추가 범위에 따라 전체 또는 일부 사용자 속성을 요청합니다. Amazon Cognito는 사용자가openid
범위를 요청할 때만 ID 토큰을 반환합니다.openid
범위는 만료 및 키 ID와 같은 구조적 ID 토큰 클레임을 승인하고 userInfo 엔드포인트의 응답으로 받는 사용자 속성을 결정합니다.-
요청한 유일한 범위가
openid
가 되는 경우 Amazon Cognito는 현재 앱 클라이언트가 읽을 수 있는 모든 사용자 속성으로 ID 토큰을 채웁니다. 이 범위의 액세스 토큰에 대한userInfo
응답만으로도 모든 사용자 속성이 반환됩니다. -
phone
,email
,profile
또는 ID 토큰과 같은 다른 범위로openid
를 요청하고 사용자의 고유 ID와 추가 범위에 의해 정의된 속성을userInfo
가 반환하는 경우입니다.
-
-
phone
범위는phone_number
및phone_number_verified
클레임에 대한 액세스 권한을 부여합니다. 이 범위는openid
범위를 통해서만 요청할 수 있습니다. -
email
범위는email
및email_verified
클레임에 대한 액세스 권한을 부여합니다. 이 범위는openid
범위를 통해서만 요청할 수 있습니다. -
aws.cognito.signin.user.admin
범위는 UpdateUserAttributes 및 와 같은 액세스 토큰이 필요한 Amazon Cognito 사용자 풀 API 작업에 대한 액세스 권한을 부여합니다VerifyUserAttribute. -
profile
범위는 클라이언트가 읽을 수 있는 모든 사용자 속성에 대한 액세스 권한을 부여합니다. 이 범위는openid
범위를 통해서만 요청할 수 있습니다.
범위에 대한 자세한 내용은 표준 OIDC 범위 목록 을 참조하세요
. -
- OAuth 권한 부여 유형
-
OAuth 권한 부여는 사용자 풀 토큰을 검색하는 인증 방법입니다. Amazon Cognito는 다음 유형의 권한 부여를 지원합니다. 이러한 OAuth 권한 부여를 앱에 통합하려면 사용자 풀에 도메인을 추가해야 합니다.
인증 코드 권한 부여
인증 코드 권한 부여는 앱이 Token 엔드포인트를 사용하여 사용자 풀 토큰과 교환할 수 있는 코드를 생성합니다 인증 코드를 교환하면 앱이 ID, 액세스 및 새로 고침 토큰을 받습니다. 암시적 권한 부여와 마찬가지로 이 OAuth 흐름은 사용자의 브라우저에서 발생합니다. 인증 코드 권한 부여는 Amazon Cognito에서 제공하는 가장 안전한 권한 부여입니다. 토큰이 사용자 세션에 표시되지 않기 때문입니다. 대신 앱은 요청을 생성하여 토큰을 반환하고 이를 보호된 스토리지에 캐시합니다. 자세한 내용은 6749 #1.3.1의 권한 부여 코드를 참조하세요. IETF RFC
참고
퍼블릭 클라이언트 앱의 모범 보안 사례로 권한 부여 코드 권한 부여 OAuth 흐름만 활성화하고 코드 교환용 Proof Key(PKCE)를 구현하여 토큰 교환을 제한합니다. PKCE를 사용하면 클라이언트가 원래 인증 요청에 제공된 것과 동일한 보안 암호로 토큰 엔드포인트를 제공한 경우에만 권한 부여 코드를 교환할 수 있습니다. 에 대한 자세한 내용은 IETF RFC 7636
을 PKCE참조하세요. 암시적 허용
암시적 권한 부여는 권한 부여 엔드포인트에서 직접 사용자의 브라우저 세션에 액세스 및 ID 토큰을 전달하지만 새로 고침 토큰은 전달하지 않습니다. 암시적 권한 부여는 토큰 엔드포인트에 대한 별도의 요청에 대한 요구 사항을 제거하지만 PKCE와 호환되지 않으며 새로 고침 토큰을 반환하지 않습니다. 이 권한 부여는 인증 코드 권한 부여를 완료할 수 없는 테스트 시나리오와 앱 아키텍처에도 적용할 수 있습니다. 자세한 내용은 6749 #1.3.2의 암시적 부여를 참조하세요. IETF RFC
인증 코드 권한 부여 및 암시적 권한 부여를 모두 활성화하고 각 권한 부여를 필요한 경우 사용할 수 있습니다. 클라이언트 보안 인증 권한 부여
클라이언트 보안 인증 권한 부여는 (M2M) 통신을 위한 machine-to-machine 것입니다. 인증 코드 및 암시적 권한 부여는 인증된 인간 사용자에게 토큰을 발급합니다. 클라이언트 보안 인증은 대화형이 아닌 시스템에서 로 범위 기반 권한을 부여합니다API. 앱은 토큰 엔드포인트에서 직접 클라이언트 보안 인증 정보를 요청하고 액세스 토큰을 받을 수 있습니다. 자세한 내용은 6749 #1.3.4의 클라이언트 자격 증명을 참조하세요. IETF RFC
클라이언트 암호가 있고 인증 코드 또는 암시적 권한 부여를 지원하지 않는 앱 클라이언트에서만 클라이언트 보안 인증 권한 부여를 활성화할 수 있습니다. 참고
사용자 자격으로 클라이언트 보안 인증 정보 흐름을 호출하지 않으므로, 이 권한 부여는 액세스 토큰에 사용자 지정 범위만 추가할 수 있습니다. 사용자 지정 범위는 자체 리소스 서버에 대해 정의할 수 있습니다.
openid
및profile
같은 기본 범위는 비 인간 사용자에게 적용되지 않습니다.ID 토큰은 사용자 속성의 검증이기 때문에 M2M 커뮤니케이션과는 관련이 없으며 클라이언트 보안 인증 권한 부여를 통해서도 발급되지 않습니다. 범위, M2M 및 리소스 서버 APIs 포함을 참조하세요.
클라이언트 보안 인증 권한 부여는 AWS 청구서에 비용을 추가합니다. 자세한 내용은 Amazon Cognito 요금
을 참조하세요.
앱 클라이언트 생성
사용자 풀 앱 클라이언트 업데이트(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 describe-user-pool-client --user-pool-id
MyUserPoolID
--client-idMyClientID
자세한 내용은 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