권한 부여 또는 문제 해결을 위해 Amazon Cognito 사용자 풀과 통합한 ID 제공업체(idP)에서 발급한 액세스 및 ID 토큰을 얻는 방법을 알고 싶습니다.
간략한 설명
OpenID Connect(OIDC) IdP 인증 흐름에서 사용자 또는 애플리케이션이 IdP 측 토큰을 볼 수 없습니다. 권한 부여 또는 문제 해결을 위해 일부 사용 사례에서는 애플리케이션 내에서 실제 IdP 발급 토큰이 필요합니다.
중요: 다음 해결 방법에서는 OIDC IdP 또는 소셜 IdP를 Amazon Cognito 사용자 풀과 통합했다고 가정합니다. IdP를 사용자 풀과 통합하지 않은 경우 타사를 통해 사용자 풀 로그인을 추가하세요.
해결 방법
사용자 풀에서 사용자 지정 속성 만들기
사용자 풀에서 사용자 지정 속성을 만들려면 다음 단계를 완료하세요.
- 새 Amazon Cognito 콘솔을 연 다음 사용자 풀에서 가입 경험 탭을 선택합니다.
- 사용자 지정 속성 섹션에서 사용자 지정 속성 추가를 선택합니다.
- 액세스 토큰에 대한 사용자 지정 속성을 만들려면 다음 값을 입력합니다.
이름: access_token
유형: 스트링
최대: 2,048
변경 가능: 이 확인란을 선택합니다
- 저장을 선택합니다.
- ID 토큰에 대한 사용자 지정 속성을 만들려면 다음 값을 입력합니다.
이름: id_token
유형: 스트링
최대: 2,048
변경 가능: 이 확인란을 선택합니다
- 저장을 선택합니다.
Amazon Cognito와 IdP 간의 속성 매핑 구성
IdP 속성에 대한 속성 매핑을 구성하려면 다음 단계를 완료합니다.
- 새 Amazon Cognito 콘솔을 연 다음 사용자 풀에서 로그인 경험 탭을 선택합니다.
- 연합 ID 공급업체 로그인 섹션의 목록에서 IdP를 선택합니다.
- ID 공급업체 정보 섹션에서 편집을 선택합니다. 인증된 범위 섹션에 다음 범위가 있는지 확인합니다.
페이스북: public_profile, email
구글: 프로필 이메일 오픈 아이디
아마존으로 로그인: profile postal_code
Apple로 로그인: 이메일 이름
기타 모든 OIDC 제공업체: 프로필 이메일 오픈 아이디
- 아이덴티티 공급자 페이지의 속성 매핑 섹션에서 수정을 선택합니다.
- 사용자 풀 속성 열에서 사용자 지정 속성을 선택합니다.
- OpenID 연결 속성 열에서 access_token 또는 id_token을 선택합니다.
- 저장을 선택합니다.
다음은 속성 매핑 구성의 결과입니다.
- 사용자 풀 속성: custom:id_token
- OpenID 연결 속성: id_token
- 사용자 풀 특성: custom:access_token
- OpenID 연결 속성: access_token
Amazon Cognito 앱 클라이언트에서 속성 읽기 및 쓰기 권한 켜기
사용자가 애플리케이션에 로그인하면 Amazon Cognito가 매핑된 속성을 업데이트합니다. Amazon Cognito가 매핑된 사용자 풀 속성을 업데이트하려면 애플리케이션의 앱 클라이언트 설정에서 매핑된 속성을 쓰기 가능으로 설정해야 합니다. Amazon Cognito가 사용자의 ID 토큰을 업데이트하려면 애플리케이션의 앱 클라이언트 설정에서 해당 속성을 읽을 수 있어야 합니다.
읽기 및 쓰기 권한을 사용 설정하려면 다음 단계를 완료합니다.
- 새 Amazon Cognito 콘솔을 연 다음 사용자 풀에서 앱 통합 탭을 선택합니다.
- 앱 클라이언트를 선택합니다.
- 속성 읽기 및 쓰기 권한 섹션에서 편집을 선택합니다.
- 속성 읽기 및 쓰기 권한 수정 페이지에서 사용자 지정 속성에 대한 읽기 및 쓰기 확인란을 선택합니다.
- 저장을 선택합니다.
사용자 지정 속성을 사용하는 각 앱 클라이언트에 대해 이 단계를 반복합니다.
자세한 내용은 속성 권한 및 범위를 참조하세요.
타사 OIDC 공급자 또는 소셜 IdP를 사용하여 로그인
Amazon Cognito 호스팅 UI를 통해 새 IdP 인증을 수행하면 사용자 지정 속성에서 IdP 토큰을 볼 수 있습니다. 최종 사용자를 선택하면 해당 속성에서 IdP 토큰을 볼 수 있습니다. ID 토큰을 디코딩하면 IdP 토큰이 포함된 사용자 지정 속성도 볼 수 있습니다.
최종 사용자에게 발급된 ID 토큰의 페이로드 섹션 예시:
{
"custom:access_token": "ya29.a0AeTM1ic9iv_FqpDQeIN......w1OPKdFEbR_Tea",
"iss": "https://cognito-idp.example_region.amazonaws.com/example_user_pool_id",
"custom:id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjhjMjdkYjRkMTN............saDMuZ29vZ2xldXNlcmNv"
}
중요:
- 사용자 지정 속성의 최대 길이는 2,048자입니다. IdP 토큰이 2,048자를 초과하면 다음과 같은 오류가 발생합니다. “문자열 속성의 길이는 2048자를 초과할 수 없습니다”.
- 사용자 지정 속성을 만든 후에는 제거하거나 수정할 수 없습니다.
- 이후 로그인할 때 사용자 지정 속성이 업데이트되지 않으면 사용자 지정 속성의 변경 가능성을 확인하세요. 이 문제는 속성을 만들 때 변경 가능 확인란의 선택을 취소한 후에 예상됩니다. 자세히 알아보려면 사용자 지정 속성을 참조하세요.
참고: 여전히 IdP 토큰을 얻을 수 없는 경우 해당 IdP에 문의하세요. IdP가 Amazon Cognito에 속성이 있는 토큰의 통과를 지원하는지 확인하세요. 그런 다음 AWS Support에 문의하여 추가 문제 해결을 요청하세요.
관련 정보
Amazon Cognito 사용자 풀에서 Auth0을 OIDC 공급자로 설정하려면 어떻게 해야 하나요?
Amazon Cognito 사용자 풀에서 LinkedIn을 소셜 ID 제공업체로 설정하려면 어떻게 해야 하나요?
Amazon Cognito 사용자 풀에서 Okta를 OpenID Connect ID 공급업체로 설정하려면 어떻게 해야 하나요?
Amazon Cognito 사용자 풀에서 페더레이션 ID 공급업체로 Google을 설정하려면 어떻게 해야 하나요?
문제 해결을 위해 브라우저에서 SAML 응답을 보는 방법