AWS Elasticsearch(Opensearch) 와 AWS Cognito 연동 4편 (구글 계정 연동)
공식 가이드는 아래 URL을 참고하면 된다. 필자는 공식 문서 읽기 귀찮아서 대충 읽고 하다가 삽질을 많이했다. 결국에는 다시 공식 문서는 찾게되니 가능하며 이거보고 따라하길... (그래도 삽질하다보면 더 기억에 오래 남긴하니 나처럼 삽질해보는 것도 추천ㅋㅋ)
https://aws.amazon.com/ko/premiumsupport/knowledge-center/cognito-google-social-identity-provider/
먼저 구글과 연동을 위해서는 구글 클라우드 플랫폼 설정이 필요하다.
아래 포스팅에서도 한번 언급된 것인데, 구글과 연동해야 하니 구글 플랫폼 설정이 필수적으로 들어간다.
2021.10.16 - [Python] - 구글 스프레드 시트 데이터 카카오톡 오픈채팅으로 전송하기
우선 프로젝트를 새로 생성한다.
생성한 프로젝트로 진입하여 OAuth 동의 화면 메뉴로 진입한다.
그러면 아래와 같이 User Type을 선택하는 화면이 나타난다. 여기서 필자는 테스트용으로 외부를 선택했다.
User Type을 외부로 설정할 경우, Google 계정이 있는 모든 사용자가 앱을 사용할 수 있다.
그리고 User Type을 내부로 설정할 경우, 조직 내 G Suite 사용자만 앱을 사용할 수 있다. 회사에서 사용할 것이라면 내부로 하는 것이 맞겠다.
다음 페이지로 넘어가서 입력이 필요한 사항들을 입력해주고 나면 아래와 같은 화면이 뜬다.
이제 사용자 인증 정보 메뉴로 진입해서 OAuth 클라이언트 ID를 생성하자.
애플리케이션 유형을 웹 애플리케이션으로 선택하고 만들기를 클릭한다.
그럼 클라이언트 ID와 보안 비밀번호를 얻을 수 있다. 이 값들은 AWS Cognito의 Google 자격 증명 공급자 메뉴에서 입력이 필요하니, 잘 메모해두자. 참고로, json 형태의 파일로 다운로드도 가능하다.
이제 AWS Cognito의 자격 증명 공급자 메뉴에서 방금 획득한 클라이언트 ID와 보안 비밀번호를 넣어보자. Cognito에 대한 기본 설정은 이전 포스팅들을 참고 바란다.
그리고 연동 사용자 즉, 구글로부터 사용자 정보를 수집하기 위한 속성 매핑을 진행하자. 필요한 사항을 선택하면 된다.
그리고 사용자 풀에 가서 앱 클라이언트 설정을 가면 Elasticsearch 도메인이 빠져있는 것을 볼 수 있다. 입력해주자 참고로 OAuth Flows는 Authorization code grant를 선택했는데, 이 것의 이점은 aws의 공식 설명을 빌려본다.
인증 시 최종 사용자에게 사용자 풀 토큰을 직접 제공하는 대신 인증 코드가 제공됩니다. 그런 다음 이 코드는 원하는 토큰과 교환할 수 있는 사용자 지정 응용 프로그램으로 전송됩니다. 토큰은 최종 사용자에게 직접 노출되지 않기 때문에 손상될 가능성이 적습니다.
https://aws.amazon.com/ko/blogs/mobile/understanding-amazon-cognito-user-pool-oauth-2-0-grants/
이제 자격 증명 풀을 새로 생성하자.
이제 사전 세팅은 다 끝났다. AWS Opensearch(Elasticsearch)에 접속해서 지금까지 설정한 사용자 풀과 자격 증명을 Opensearch(Elasticsearch)와 매핑시켜주자.
변경 사항 저장을 했지만 아래와 같은 오류가 발생했다.
오류 메시지 그대로다. 사용자 풀에서 도메인 네임을 지정해줘야한다. 아래 링크에 관련 설명이 있다.
https://docs.aws.amazon.com/opensearch-service/latest/developerguide/cognito-auth.html
그래서 도메인 이름을 설정해준다.
또 에러가 발생한다.
아래와 같이 액세스 정책을 추가하니 드디어 오류 없이 해결되었다.
드디어 도메인 상태가 처리 중으로 나왔다. 처리가 완료된 이후 과연 구글 계정 연동이 될 것인가 한번 기다려보자.
결과는?
또 실패. 구글 로그인 메뉴는 보이지 않고, 구글 연동 이전과 똑같이 cognito 기본 로그인 창이 나온다. 혹시나해서 구글 계정으로 로그인시도 해봤지만 역시 실패했다.
다시 문제를 찾아본다. 공식 가이드를 다시 찾아보니 3가지 문제점이 발견되었다. 설명하자면 길어지니 3개의 캡처로 대체한다.
위와 같이 수정한 결과 아래와 같이 드디어 구글 계정 로그인 메뉴가 생성되었다 ㅠㅠ 감동
하지만 또 익숙한 에러가 발생했다.
2021.12.08 - [AWS] - AWS Elasticsearch(Opensearch) 와 AWS Cognito 연동 1편 (기본 연동 방법) 에서 확인했던 내용이다.
참고해서 해결하니 정상적으로 키바나 화면이 보이기 시작했다.
끝