서드 파티를 통한 사용자 풀 로그인 추가 - Amazon Cognito

서드 파티를 통한 사용자 풀 로그인 추가

앱 사용자는 사용자 풀을 통해 직접 로그인하거나 타사 자격 증명 공급자(IdP)를 통해 연동 로그인할 수 있습니다. 사용자 풀에서는 Facebook, Google 및 Apple, 그리고 Amazon을 통한 소셜 로그인에서 반환된 토큰과 OpenID Connect(OIDC) 및 SAML IdP에서 반환된 토큰의 처리 작업을 관리합니다. Amazon Cognito는 기본 제공되는 호스팅 웹 UI를 사용하여 모든 IdP에서 인증된 사용자에 대한 토큰 처리 및 관리 기능을 제공합니다. 이렇게 하면 백엔드 시스템을 한 세트의 사용자 풀 토큰에서 표준화할 수 있습니다.

Amazon Cognito 사용자 풀에서 페더레이션 로그인이 작동하는 방식

서드 파티(페더레이션)를 통한 로그인을 Amazon Cognito 사용자 풀에서 사용할 수 있습니다. 이 기능은 Amazon Cognito 자격 증명 풀(페더레이션 자격 증명)을 통한 페더레이션과 무관합니다.


                소셜 로그인의 인증 개요

Amazon Cognito는 사용자 디렉터리이자 OAuth 2.0 아이덴티티 제공업체(IdP)입니다. Amazon Cognito 디렉터리에 로컬 사용자를 로그인할 때 사용자 풀은 앱의 IdP입니다. 로컬 사용자는 외부 IdP를 통한 페더레이션 없이 사용자 풀 디렉터리에만 존재합니다.

Amazon Cognito를 소셜, SAML 또는 OpenID Connect(OIDC) IdP에 연결하면 사용자 풀은 여러 서비스 제공업체와 앱 간의 다리 역할을 합니다. IdP에 있어 Amazon Cognito는 서비스 제공업체(SP)입니다. IdP는 OIDC ID 토큰 또는 SAML 어설션을 Amazon Cognito에 전달합니다. Amazon Cognito는 토큰 또는 어설션에서 사용자에 대한 클레임을 읽고 이러한 클레임을 사용자 풀 디렉터리의 새 사용자 프로필에 매핑합니다.

그런 다음 Amazon Cognito는 페더레이션 사용자에 대한 사용자 프로필을 자체 디렉터리에 생성합니다. Amazon Cognito는 IdP, 그리고 OIDC와 소셜 아이덴티티 제공업체의 경우 IdP가 운영하는 퍼블릭 userinfo 엔드포인트의 클레임을 기반으로 사용자에게 속성을 추가합니다. 매핑된 IdP 속성이 변경되면 사용자 풀에서 사용자 속성이 변경됩니다. IdP와 별개로 속성을 더 추가할 수도 있습니다.

Amazon Cognito가 페더레이션 사용자 프로필을 생성한 후에는 해당 함수가 변경되고 앱의 IdP로 표시되어 SP가 됩니다. Amazon Cognito는 OIDC와 OAuth 2.0 IdP의 조합입니다. 액세스 토큰, ID 토큰 및 새로 고침 토큰을 생성합니다. 토큰에 대한 자세한 내용은 사용자 풀에 토큰 사용 섹션을 참조하세요.

Amazon Cognito와 통합되는 앱을 설계하여 페더레이션 사용자든 로컬 사용자든 상관없이 사용자를 인증하고 권한을 부여해야 합니다.

Amazon Cognito에서 서비스 공급자로서 앱의 책임

토큰의 정보 확인 및 처리

대부분의 시나리오에서 Amazon Cognito는 인증된 사용자를 인증 코드와 함께 추가한 앱 URL로 리디렉션합니다. 앱에서는 액세스, ID 및 새로 고침 토큰용 코드를 교환합니다. 그런 다음 토큰의 유효성을 확인하고 토큰의 클레임을 기반으로 사용자에게 정보를 제공해야 합니다.

Amazon Cognito API 요청으로 인증 이벤트에 응답

앱은 Amazon Cognito 사용자 풀 API인증 API 엔드포인트와 통합되어야 합니다. 인증 API는 사용자를 로그인 및 로그아웃하고 토큰을 관리합니다. 사용자 풀 API에는 사용자 풀, 사용자 및 인증 환경의 보안을 관리하는 다양한 작업이 있습니다. 앱은 Amazon Cognito로부터 응답을 받을 때 다음에 수행할 작업을 알아야 합니다.

Amazon Cognito 사용자 풀 타사 로그인에 대해 알아야 할 사항

  • 사용자가 페더레이션 공급자로 로그인하도록 하려면 도메인을 선택해야 합니다. 이렇게 하면 Amazon Cognito 호스팅 UI 및 호스팅된 UI와 OIDC 엔드포인트가 설정됩니다. 자세한 내용은 호스트된 UI에 고유한 도메인 사용 섹션을 참조하세요.

  • API 작업 InitiateAuthAdminInitiateAuth를 통해 페더레이션 사용자로 로그인할 수 없습니다. 페더레이션 사용자는 Login 엔드포인트 또는 권한 부여 엔드포인트를 사용해서만 로그인할 수 있습니다.

  • 권한 부여 엔드포인트리디렉션 엔드포인트입니다. 요청에 idp_identifier 또는 identity_provider 파라미터를 입력하면 호스팅된 UI를 우회하여 자동으로 IdP로 리디렉션됩니다. 그렇지 않으면 호스팅된 UI Login 엔드포인트로 리디렉션됩니다. 예시는 엔터프라이즈 대시보드에서 Amazon Cognito 앱 북마크에서 확인하세요.

  • 호스팅 UI가 세션을 페더레이션 IdP로 리디렉션하면 Amazon Cognito는 요청에 user-agent 헤더인 Amazon/Cognito를 포함합니다.

  • Amazon Cognito는 고정 식별자와 IdP의 이름 조합에서 페더레이션 사용자 프로필의 username 속성을 추출합니다. 사용자 지정 요구 사항에 맞는 사용자 이름을 생성하려면 preferred_username 속성에 대한 매핑을 만듭니다. 자세한 내용은 매핑에 대해 알아야 할 사항 섹션을 참조하세요.

    예: MyIDP_bob@example.com

  • Amazon Cognito는 페더레이션 사용자의 ID 정보를 속성과 identities라는 ID 토큰의 클레임에 기록합니다. 이 클레임에는 사용자의 제공업체와 제공업체의 고유 ID가 포함됩니다. 사용자 프로필에서 identities 속성을 직접 변경할 수 없습니다. 페더레이션 사용자를 연결하는 방법에 대한 자세한 내용은 페더레이션 사용자를 기존 사용자 프로필에 연결 색션을 참조하세요.

  • UpdateIdentityProvider API 요청에서 IdP를 업데이트하면, 변경 사항이 호스팅된 UI에 표시되기까지 최대 1분이 걸립니다.

  • Amazon Cognito는 Amazon Cognito와 사용자 IdP 간의 HTTP 리디렉션을 20개까지 지원합니다.

  • 사용자가 호스팅 UI로 로그인하면 브라우저는 로그인에 사용한 클라이언트 및 공급자를 기록하는 암호화된 로그인 세션 쿠키를 저장합니다. 동일한 파라미터로 다시 로그인을 시도하면 호스팅 UI는 만료되지 않은 기존 세션을 재사용하며, 사용자는 보안 인증을 다시 제공하지 않고 인증합니다. 사용자는 다른 IdP로 다시 로그인할 경우(로컬 사용자 풀 로그인으로 전환하거나 로컬 사용자 풀 로그인에서 전환하는 경우 포함) 보안 인증을 제공하고 새 로그인 세션을 생성해야 합니다.

    사용자 풀 IdP는 어떤 앱 클라이언트에도 할당할 수 있으며, 사용자는 사용자의 앱 클라이언트에 할당된 IdP로만 로그인할 수 있습니다.