- Google Cloud Platform 및/또는 Azure 포털에 애플리케이션을 등록합니다.
- 이러한 애플리케이션에 대한 계정 자격 증명(Client ID 및 Client secret)을 생성합니다.
- 생성한 자격 증명을 Consul에 전달합니다.
Google에 애플리케이션 등록하기
Google Cloud Platform에서 프로젝트 만들기
- Google Cloud Platform의 New Project 페이지로 이동합니다.
- 프로젝트 이름을 입력한 다음 Create를 클릭합니다.

- 프로젝트가 생성되었다는 알림이 표시될 때까지 기다립니다.

애플리케이션 설정
- Google Cloud Console로 이동하여 해당 프로젝트를 선택합니다.

- 화면 왼쪽 메뉴에서 APIs & Services > OAuth consent screen을 선택합니다.

- External 사용자 유형을 선택하고 Create를 클릭합니다.
- 애플리케이션 이름을 입력합니다. User support email 드롭다운 목록에서 Gmail 주소를 선택합니다.

- 페이지 하단의 Developer contact information 섹션에 개발자의 이메일을 입력하고 Save and continue를 클릭합니다.

- Add or remove scopes를 클릭합니다. 그러면 오른쪽에 Update selected scopes 대화 상자가 열립니다.
- 아래의 텍스트를 복사하여 대화 상자 하단의 Manually add scopes 입력란에 붙여넣고 Add to table을 클릭합니다:
범위를 수동으로 선택할 수도 있습니다. 다음 범위를 선택해야 합니다.
openidhttps://mail.google.com/../auth2/userinfo.email../auth2/userinfo.profile
- Update를 클릭합니다. 그러면 Update selected scopes 대화 상자가 닫히고 선택한 범위가 표시됩니다.

- 화면 하단에서 Save and continue를 클릭합니다.
- Test users 페이지 설정을 건너뛰고 Summary 페이지로 이동하려면 Save and continue를 클릭합니다.
계정 자격 증명 생성
- 화면 왼쪽에 있는 메뉴에서 Credentials를 선택합니다.
- + Create credentials를 클릭하고 OAuth client ID를 선택합니다.

- Web application 유형을 선택합니다.

- Authorized redirect URIs 섹션에서 + Add URI를 선택합니다.

- 표시되는 field에 리디렉션 URI를 입력합니다:

- Create를 클릭합니다.

게시 및 검증

https://mail.google.com/ 범위는 애플리케이션이 기밀 사용자 데이터에 액세스하도록 허용하므로, 애플리케이션에 대한 검증이 필요하다는 메시지가 표시됩니다.
애플리케이션을 검증하려면 다음을 제공해야 합니다.
- 애플리케이션의 개인정보처리방침에 대한 공식 링크
- 애플리케이션을 사용하여 Google 사용자 데이터를 얻는 목적을 보여주는 YouTube 동영상
- 기밀 사용자 데이터에 대한 액세스가 필요한 이유를 설명하는, Google을 수신자로 한 텍스트
- Google Search Console에서 검증을 마친 모든 도메인의 전체 목록

애플리케이션이 검증되기 전에는 최대 100명의 사용자만 사용할 수 있습니다. 사용자 카운터는 OAuth consent screen 섹션의 하단에 위치하며, 프로젝트 전체 기간 동안 초기화할 수 없습니다.

Microsoft Azure에서 애플리케이션 등록
애플리케이션 등록
- App registrations 페이지로 이동합니다.
- New registration을 클릭합니다.
- 애플리케이션 이름을 입력하고 지원되는 계정 유형을 선택합니다.

애플리케이션에 Multitenant 유형을 선택하면, 해당 애플리케이션은 모든 Azure AD 테넌트의 사용자가 사용할 수 있습니다. 이러한 애플리케이션은 검증이 필요하며, 이 검증은 Microsoft Partner Network 참가자에게만 제공됩니다. 참가자가 아닌 경우 Single tenant를 선택해야 하며, 이 경우 애플리케이션은 자신의 Azure AD 테넌트 사용자에게만 제공됩니다.
- Redirect URI 섹션에서 Web 플랫폼을 선택한 후 리디렉션 URI를 지정합니다:

- Register를 클릭합니다.
애플리케이션 권한 설정
- API permissions 탭으로 이동합니다.

- Add permission을 클릭합니다.
- 표시되는 대화 상자에서 Microsoft Graph 섹션을 선택합니다.

- Delegated permissions를 선택합니다.

- 다음 권한을 추가합니다:
emailIMAP.AccessAsUser.Alloffline_accessopenidprofile
- Add permissions를 클릭합니다. 그러면 대화 상자가 닫히고, 선택한 권한이 표시됩니다.
클라이언트 시크릿 생성
- Authentication 탭으로 이동합니다.

- Implicit grant and hybrid flows 섹션에서 **ID tokens (used for implicit and hybrid flows)**를 선택합니다.

- 화면 상단에서 Save를 클릭합니다.
- Certificates & secrets 탭으로 이동한 다음 New client secret를 클릭합니다.

- 열리는 대화 상자에서 클라이언트 시크릿의 이름과 만료 일자를 지정합니다.
최대 만료 기간은 24개월입니다.
- Add를 클릭합니다. 그러면 대화 상자가 닫히고 새 클라이언트 시크릿에 대한 정보가 표시됩니다.


애플리케이션 검증
- Branding & properties 탭으로 이동합니다.

- Publisher domain field에 도메인이 지정되어 있는지 확인합니다. 필요한 경우 Configure a domain을 클릭하여 도메인을 구성합니다.

도메인 이름 옆에 표시되는 경고 아이콘은 지정된 도메인을 사용하는 애플리케이션을 검증할 수 없음을 의미합니다. Update domain을 클릭하여 Azure Active Directory 테넌트와 관련된 다른 유효한 도메인을 지정하십시오. 또는 새 도메인을 검증할 수도 있습니다.
- Publisher verification 섹션에서 MPN ID를 입력한 뒤 Verify and save를 클릭합니다.
MPN ID를 추가할 수 있는 필요한 권한이 없는 경우, 모든 게시자 검증 요구 사항이 충족되는지 확인하십시오.
Consul에 자격 증명 전달
설정을 시작하기 전에 kubectl 명령줄 도구가 설치되어 있고 Kubernetes 클러스터에 연결되어 있는지 확인하십시오.
- 다음 명령을 실행하여 Consul 웹 인터페이스에 액세스합니다:
http://localhost:8500/ui/dc1/kv/secret/로 이동합니다.
- 열린 Key/Value 탭에서 적절한 Vantage 배포 범위를 선택합니다. 그런 다음 vantage 프로젝트를 선택합니다.

- tokenmanagement 서비스를 선택합니다.

- oAuthClientConfiguration 섹션으로 이동합니다.

- 사용자 데이터를 설정하려는 서비스(google 또는 microsoft)를 선택합니다.

- clientId 키를 선택합니다.
- 이전에 저장해 둔 Client ID 값을 입력 필드에 복사하여 붙여넣은 다음 Save를 클릭합니다.

- clientSecret 키에 대해서도 6번과 7번 단계를 반복합니다.
- 다음 명령을 실행하여 tokenmanagement 서비스를 다시 시작합니다:
Client Secret 업데이트
Google에서 Client Secret 업데이트
- Google Cloud Console로 이동하여 해당 프로젝트를 선택합니다.
- 왼쪽 메뉴에서 APIs & Services > Credentials를 선택합니다.
- OAuth 2.0 Client IDs 섹션에서 IMAP 서버에 연결할 때 인증에 사용하는 식별자를 선택합니다.
- Reset secret을 클릭합니다.

- 팝업 대화 상자에서 Reset을 클릭합니다. 그러면 Client secret 값이 업데이트되고, 이전 값은 더 이상 유효하지 않게 됩니다.
- 자격 증명이 포함된 JSON 파일을 다운로드합니다. 또는 화면 오른쪽에 표시되는 Client secret 값을 복사합니다.

Microsoft Azure에서 클라이언트 비밀(Client secret) 업데이트
- App registrations 페이지로 이동하여 IMAP 서버를 사용한 인증에 이용되는 애플리케이션을 선택합니다.

- Certificates & secrets 탭으로 이동한 후 New client secret을 클릭합니다.
- 표시되는 대화 상자에서 클라이언트 비밀의 이름과 만료 날짜를 지정합니다.
- Add를 클릭합니다. 그러면 대화 상자가 닫히고 새 클라이언트 비밀에 대한 정보가 표시됩니다. 이 페이지를 닫은 후에는 다시 확인할 수 없으므로 Value 값을 복사해 안전한 위치에 저장하는 것이 중요합니다.
- 현재 클라이언트 비밀이 아직 만료되지 않았다면, 새 클라이언트 비밀만을 사용해 클라이언트를 식별하도록 기존 클라이언트 비밀을 삭제할 수 있습니다.
