Google OpenID Connect로 ACS 네임스페이스 마이그레이션

이 항목은 현재 Google을 ID 공급자로 사용하는 ACS(액세스 제어 서비스) 2.0 네임스페이스의 소유자를 대상으로 합니다. ACS는 Google의 OpenID 2.0 구현을 사용하여 이 기능을 제공합니다. Google은 2015년 4월 20일까지 OpenID 2.0 지원을 중단할 계획입니다. ACS 네임스페이스는 2015년 6월 1일까지 Google의 OpenID 2.0 구현에서 계속 작동하며, 이때 Google의 OpenID 커넥트 구현을 사용하려면 이러한 네임스페이스의 마이그레이션을 완료해야 합니다. 그렇지 않으면 사용자는 더 이상 Google 계정으로 애플리케이션에 로그인할 수 없습니다. ACS 네임스페이스를 OpenID Connect로 마이그레이션하는 동안 응용 프로그램이 중단되지는 않습니다. 한 가지 예외(아래의 참고 참조)를 제외하고 이 마이그레이션은 응용 프로그램 코드를 변경하지 않고도 가능합니다. OpenID Connect를 사용하도록 ACS 네임스페이스를 마이그레이션한 후 백 엔드의 사용자 식별자를 OpenID Connect 식별자로 마이그레이션해야 합니다. 이 마이그레이션은 2017년 1월 1일까지 완료되어야 합니다. 백 엔드에서 코드를 변경해야 합니다. 두 마이그레이션 단계에 대한 자세한 내용은 아래의 중요 참고를 참조하세요.

중요

다음과 같은 중요한 날짜를 확인하고 각 날짜까지 필요한 조치를 완료하여 Google을 ID 공급자로 사용하는 ACS 네임스페이스가 계속 작동하도록 해야 합니다.

  • 2015년 6월 1일 - Google의 OpenID 2.0 구현에서 ACS 네임스페이스의 작동이 중지됩니다. 이 날짜까지 Google OpenID Connect를 사용하도록 ACS 네임스페이스 마이그레이션을 완료해야 합니다. 마이그레이션 중에 문제가 발생하면 이 날짜 이전에 OpenID 2.0으로 롤백할 수 있습니다. 이 날짜까지 마이그레이션되지 않은 네임스페이스의 경우 사용자는 더 이상 Google 계정으로 로그인할 수 없으며 Google 계정의 OpenID 2.0이 사라졌음을 나타내는 페이지가 표시됩니다. Google 계정으로 로그인 기능을 복원하려면 네임스페이스를 마이그레이션해야 합니다.

    대부분의 경우 응용 프로그램 코드 변경이 필요하지 않습니다. 응용 프로그램과 연결된 규칙 그룹에 ID 공급자인 Google에 대한 "모든 클레임 통과" 규칙이 있는 경우 코드를 변경해야 할 수 있습니다. 이는 마이그레이션할 때 새 클레임 유형(주체)을 Google에서 ACS에 사용할 수 있게 되기 때문이며, 응용 프로그램에서 새 클레임 유형이 존재하는 경우를 정상적으로 처리할 수 있도록 하려면 코드를 변경해야 할 수 있습니다. 마이그레이션을 성공적으로 완료하기 위해 응용 프로그램에서 새 클레임 유형을 처리할 필요는 없습니다.

  • 2017년 1월 1일 – Google의 OpenID 2.0 및 OpenID Connect 구현에서는 서로 다른 식별자를 사용하여 Google 사용자를 고유하게 식별합니다. ACS 네임스페이스를 마이그레이션할 때 ACS에서는 응용 프로그램에 사용할 수 있는 두 식별자인 현재 OpenID 2.0 식별자와 새로운 OpenID Connect 식별자를 모두 만듭니다. 이 날짜까지 백 엔드 시스템의 사용자 식별자를 OpenID Connect 식별자로 전환하고 이후에는 OpenID Connect 식별자만 사용해야 합니다. 이렇게 하려면 응용 프로그램 코드를 변경해야 합니다.

Stack Overflow에서 마이그레이션에 대한 질문을 게시하고 'acs-google'으로 태그를 지정할 수 있습니다. 가능한 한 신속하게 답변이 제공될 것입니다.

Google의 계획에 대한 자세한 내용은 OpenID 2.0 마이그레이션 가이드를 참조하세요.

마이그레이션 목록

다음 표에는 Google의 OpenID Connect 구현을 사용하도록 ACS 네임스페이스를 마이그레이션하는 데 필요한 단계를 요약하는 검사 목록이 포함되어 있습니다.

단계 설명 완료 기한

1

Google 개발자 콘솔에서 Google+ 응용 프로그램을 만듭니다.

2015년 6월 1일

2

응용 프로그램과 연결된 규칙 그룹에 ID 공급자인 Google에 대한 "모든 클레임 통과" 규칙이 있는 경우 응용 프로그램을 테스트하여 마이그레이션 준비가 되어 있는지 확인합니다. 그렇지 않은 경우 이 단계는 선택 사항입니다.

2015년 6월 1일

3

ACS 관리 포털을 통해 Google+ 응용 프로그램의 매개 변수(클라이언트 ID 및 클라이언트 보안 비밀)를 제공하여 Google의 OpenID Connect 구현을 사용하도록 ACS 네임스페이스를 전환합니다. 마이그레이션에 문제가 발생하는 경우 2015년 6월 1일까지는 OpenID 2.0으로 롤백이 가능합니다.

2015년 6월 1일

4

백 엔드 시스템의 사용자 식별자를 현재의 Google OpenID 2.0 식별자에서 새로운 Google OpenID Connect 식별자로 마이그레이션합니다. 이렇게 하려면 코드를 변경해야 합니다.

2017년 1월 1일

마이그레이션 연습

Google의 OpenID Connect 구현을 사용하도록 ACS 네임스페이스를 마이그레이션하려면 다음 단계를 완료합니다.

  1. Google+ 애플리케이션 만들기

    이 작업을 수행하는 방법에 대한 자세한 지침은 방법: Google+ 애플리케이션 만들기 섹션을 참조하세요.

  2. 응용 프로그램이 마이그레이션 준비가 되어 있는지 확인

    애플리케이션과 연결된 규칙 그룹에서 Google에 대한 "모든 클레임 통과" 규칙이 있는 경우 방법: ACS 애플리케이션의 마이그레이션 준비 상태 섹션의 지침에 따라 마이그레이션 준비 상태를 테스트합니다. 이는 마이그레이션할 때 새 클레임 유형(주체)을 Google에서 ACS에 사용할 수 있게 되기 때문입니다.

    참고

    "모든 클레임 통과" 규칙은 입력 클레임 유형입력 클레임 값AnyOutput 클레임 형식 으로 설정되고 출력 클레임 값첫 번째 입력 클레임 유형을 통과 하고 입력 클레임 값을 각각 통과 하도록 설정되는 규칙입니다. 이 규칙은 아래와 같이 ACS 관리 포털에서 출력 클레임 열이 통과로 설정된 상태로 표시됩니다.

    Passthrough rule

    응용 프로그램과 연결된 규칙 그룹에 ID 공급자인 Google에 대한 규칙을 이전에 생성했거나 수동으로 추가한 경우 이 단계를 건너뛸 수 있습니다. 이러한 경우에는 마이그레이션할 때 새로운 주체 클레임 유형이 응용 프로그램에 전송되지 않기 때문입니다.

    이러한 옵션에 대한 자세한 내용은 규칙 그룹 및 규칙을 참조하세요.

  3. Google의 OpenID Connect 구현을 사용하도록 ACS 네임스페이스 전환

    1. Microsoft Azure 관리 포털로 이동하여 로그인한 다음 Active Directory를 클릭합니다. 마이그레이션해야 하는 ACS 네임스페이스를 선택하고 관리를 클릭하여 ACS 관리 포털을 시작합니다.

    2. ACS 관리 포털의 왼쪽 트리에서 ID 공급자를 클릭하거나 시작 섹션에서 ID 공급자 링크를 클릭합니다. Google을 클릭합니다.

      Access Control Service Identity Providers Dialog

    3. Google ID 공급자 편집 페이지에서 OpenID Connect 사용을 선택합니다.

      Edit Google Identity Provider dialog

    4. 클라이언트 ID클라이언트 보안 비밀 필드(이제 사용하도록 설정됨)에 Google+ 응용 프로그램에서 해당 값을 복사해 넣습니다.

      Edit Google Identity Provider dialog

      참고

      이 시점에서 저장을 클릭하면 ACS 네임스페이스의 모든 Google ID 공급자 요청에서 자동으로 Google의 OpenID Connect 구현을 사용합니다. 롤백해야 하는 경우 OpenID Connect 사용을 선택 취소하면 됩니다. 클라이언트 ID와 클라이언트 보안 비밀은 저장된 상태로 유지되고 나중에 다시 사용할 수 있습니다.

    5. 저장을 클릭합니다.

    6. Google ID로 로그인하여 OpenID Connect를 사용하도록 전환되었는지 확인합니다. 로그인하는 데 문제가 있는 경우 Google ID 공급자 편집 페이지로 돌아가서 OpenID Connect 사용의 선택을 취소하여 OpenID 2.0으로 롤백합니다. 롤백한 후 Google 개발자 콘솔에서 복사한 클라이언트 ID클라이언트 보안 비밀이 네임스페이스에 맞게 올바르게 입력되었는지 확인합니다. 예를 들어 오타가 있는지 확인합니다.

  4. 백 엔드 시스템의 사용자 식별자를 Open ID 2.0에서 OpenID Connect로 마이그레이션

    2017년 1월 1일 이전에 백 엔드 시스템의 사용자 식별자를 기존 Google Open ID 2.0 식별자에서 새 Google OpenID 커넥트 식별자로 마이그레이션해야 합니다. 이 단계에는 코드 변경이 필요합니다. 자세한 내용은 방법: 사용자의 기존 Open ID 2.0 식별자를 새 OpenID 커넥트 사용자 식별자로 마이그레이션

방법: Google+ 애플리케이션 만들기

다음 단계를 수행하려면 Google 계정이 필요합니다. 없는 경우 .에서 https://accounts.google.com/SignUp하나를 가져올 수 있습니다.

  1. 브라우저 창에서 Google 개발자 콘솔 로 이동하여 Google 계정 자격 증명으로 로그인합니다.

  2. 프로젝트 만들기를 클릭하고 프로젝트 이름프로젝트 ID를 입력합니다. 서비스 약관 확인란을 선택합니다. 그런 다음 만들기를 클릭합니다. 이렇게 하면 Google에 응용 프로그램이 등록됩니다.

    Google Developer Console New Project dialog

  3. 왼쪽 창에서 API & 인증 을 클릭합니다. 사용자 인증 정보를 클릭합니다. OAuth 아래에서 새 클라이언트 ID 만들기를 클릭합니다. 웹 응용 프로그램을 선택하고 동의 화면 구성을 클릭합니다. 제품 이름을 제공하고 저장을 클릭합니다.

    Google Developer Console Consent screen

  4. 왼쪽 창에서 API & 인증 을 클릭합니다. API를 클릭합니다. API 찾아보기 아래에서 Google+ API를 검색하고 찾습니다. 상태사용으로 설정합니다.

    Google Developer Console Browse APIs

  5. 클라이언트 ID 만들기 대화 상자에서 웹 애플리케이션애플리케이션 유형으로 선택합니다.

    권한 있는 Javascript 원본 필드에서 선행 "HTTPS://" 및 후행 포트 번호를 포함하여 네임스페이스의 FQDN(정규화된 도메인 이름) URL을 지정합니다. 예를 들면 다음과 같습니다https://contoso.accesscontrol.windows.net:443.

    권한 있는 리디렉션 URI 필드에서 네임스페이스의 FQDN(정규화된 도메인 이름) URL이 포함된 URI를 지정합니다(앞에 오는 "HTTPS://"과 후행 포트 번호, "/v2/openid") 예를 들면 다음과 같습니다https://contoso.accesscontrol.windows.net:443/v2/openid.

    클라이언트 ID 만들기를 클릭합니다.

    Google Developer Console Create Client ID screen

  6. 웹 애플리케이션용 클라이언트 ID 페이지의 클라이언트 ID클라이언트 보안 비밀 값을 기록해 둡니다. ACS 관리 포털에서 Google의 OpenID Connect 구현을 구성하려면 이러한 값이 필요합니다.

    Google Developer Console Client ID for Web App

    중요

    클라이언트 보안 비밀은 중요한 보안 자격 증명이므로 공개되지 않도록 주의해야 합니다.

방법: 사용자의 기존 Open ID 2.0 식별자를 새 OpenID 커넥트 사용자 식별자로 마이그레이션

Google의 OpenID 커넥트 구현을 사용하도록 ACS 네임스페이스를 성공적으로 마이그레이션한 후에는 2017년 1월 1일까지(Google의 OpenID 2.0 마이그레이션 가이드별) 백 엔드 시스템의 사용자 식별자를 현재 OpenID 2.0 식별자에서 새 OpenID 커넥트 식별자로 마이그레이션해야 합니다.

다음 표에는 Google의 OpenID Connect 구현을 사용하도록 ACS 네임스페이스를 마이그레이션한 후 Google에서 ACS에 사용할 수 있게 되는 클레임 유형이 나와 있습니다.

클레임 유형 URI 설명 프로토콜 가용성

이름 식별자

https://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier

Google에서 제공하는 사용자 계정의 고유 식별자입니다. 기존의 OpenID 2.0 식별자입니다.

OpenID 2.0, OpenID Connect

제목

https://schemas.microsoft.com/identity/claims/subject

Google에서 제공하는 사용자 계정의 고유 식별자입니다. 새로운 OpenID Connect 식별자입니다.

OpenID Connect

Name

https://schemas.xmlsoap.org/ws/2005/05/identity/claims/name

Google에서 제공하는 사용자 계정의 표시 이름입니다.

OpenID 2.0, OpenID Connect

(아래 참고 사항 참조)

메일 주소

https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

Google에서 제공하는 사용자 계정의 메일 주소입니다.

OpenID 2.0, OpenID Connect

ID 공급자

https://schemas.microsoft.com/accesscontrolservice/2010/07/claims/IdentityProvider

ACS에서 제공하는 클레임으로, 기본 Google ID 공급자를 통해 사용자가 인증되었음을 신뢰 당사자 응용 프로그램에 알려 줍니다. 이 클레임의 값은 ACS 관리 포털에서 ID 공급자 편집 페이지의 영역 필드를 통해 확인할 수 있습니다.

OpenID 2.0, OpenID Connect

참고

등록된 Google+ 프로필이 없는 Google 사용자의 경우 이름 클레임 유형의 값은 OpenID Connect의 전자 메일 주소 클레임 유형 값과 같습니다.

이름 식별자주체 클레임 유형은 이전의 OpenID 2.0 식별자를 새로운 OpenID Connect 식별자에 매핑하여 백 엔드에 있는 기존 사용자의 고유 식별자를 추적하고 전환하는 데 사용할 수 있습니다.

응용 프로그램과 연결된 규칙 그룹에 ID 공급자인 Google에 대한 "모든 클레임 통과" 규칙이 있는 경우 응용 프로그램에서는 자동으로 주체 클레임 유형을 받기 시작합니다.

응용 프로그램과 연결된 규칙 그룹에 ID 공급자인 Google에 대한 규칙을 이전에 생성했거나 수동으로 추가한 경우 주체 클레임 유형을 수동으로 추가해야 합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 규칙 그룹 및 규칙을 참조하세요.

Input Claim Configuration

예를 들어 이전에 규칙 그룹에 ID 공급자인 Google에 대한 규칙을 생성하고 새로운 주체 클레임 유형을 추가한 경우(위 참조) 다음이 표시됩니다.

Google passthrough claims

이 규칙 그룹을 사용하는 응용 프로그램에서는 주체 클레임 유형을 다른 클레임 유형과 함께 받습니다.

참고

2017년 1월 1일 후 Google에서 식별자 매핑에 대한 지원을 중단할 때 ACS에서는 이름 식별자주체 클레임 유형을 동일한 OpenID Connect 사용자 식별자로 채웁니다.

방법: ACS 애플리케이션의 마이그레이션 준비 상태 확인

한 가지 예외를 제외하고 Google의 OpenID Connect 구현을 사용하도록 ACS 네임스페이스를 마이그레이션하는 작업은 응용 프로그램 코드를 변경하지 않고도 가능합니다. 예외인 경우는 응용 프로그램과 연결된 규칙 그룹에 ID 공급자인 Google에 대한 "모든 클레임 통과" 규칙이 있는 경우입니다. 이 경우에는 마이그레이션할 때 새 클레임 유형(주체)이 응용 프로그램에 자동으로 전송되기 때문에 응용 프로그램 코드를 변경해야 합니다.

이 섹션에서는 마이그레이션의 영향을 받을 모든 응용 프로그램이 새 클레임 유형을 처리할 준비가 되었는지 확인하는 데 권장되는 변경 및 테스트 절차에 대해 간략하게 설명합니다.

이 방법 섹션의 목적을 위해 ns-contoso라는 ACS 네임스페이스의 소유자가 있고 프로덕션 환경의 응용 프로그램이 ProdContosoApp라고 가정합니다. 또한 이 응용 프로그램에서 Google을 ID 공급자로 사용하고 Google에 대해 "모든 클레임 통과" 규칙을 사용하도록 설정했다고 가정합니다.

설정

  1. 시작하려면 Microsoft Azure 관리 포털로 이동하여 로그인한 다음 Active Directory를 클릭합니다. ACS 네임스페이스(ns-contoso)를 선택한 다음 관리를 클릭하여 ACS 관리 포털을 시작합니다.

  2. ACS 관리 포털의 왼쪽 트리에서 신뢰 당사자 응용 프로그램을 클릭하거나 시작 섹션에서 신뢰 당사자 응용 프로그램 링크를 클릭합니다. 그런 다음 프로덕션 응용 프로그램(ProdContosoApp)을 클릭합니다.

  3. ProdContosoApp의 속성을 기록해 둡니다. 나중에 이러한 속성이 필요하게 됩니다.

    Edit Relying Party Application dialog

  4. 규칙 그룹 아래에서 ProdContosoApp에 대한 기본 규칙 그룹을 클릭하여 Google에 대해 "모든 클레임 통과" 규칙을 사용하도록 설정되어 있는지 확인합니다.

    Google passthrough claim

1단계: 프로덕션 ACS 네임스페이스에서 애플리케이션의 테스트 인스턴스 설정

애플리케이션의 테스트 인스턴스인 TestContosoApp을 다른 루트 URI에 설정합니다. 예를 들면 다음과 같습니다 https://contoso-test.com:7777/. ns-contoso 네임스페이스에서 신뢰 당사자 애플리케이션(신뢰 당사자 애플리케이션)으로 등록해야 합니다.

  1. ACS 관리 포털의 왼쪽 트리에서 신뢰 당사자 응용 프로그램을 클릭하거나 시작 섹션에서 신뢰 당사자 응용 프로그램 링크를 클릭합니다. 그런 다음 신뢰 당사자 응용 프로그램 페이지에서 추가를 클릭합니다.

  2. 신뢰 당사자 응용 프로그램 추가 페이지에서 다음을 수행합니다.

    • 이름에 테스트 응용 프로그램의 이름을 입력합니다. 여기서는 TestContosoApp입니다.

    • 모드에서 Enter settings manually를 선택합니다.

    • 영역에 테스트 응용 프로그램의 URI를 입력합니다. 여기에 있습니다 https://contoso-test.com:7777/.

    • 이 방법 섹션의 목적을 위해 오류 URL(선택 사항)은 비워 둘 수 있습니다.

    • 토큰 형식, 토큰 암호화 정책토큰 수명(초) 속성과 토큰 서명 설정 섹션의 경우 ProdContosoApp에 사용한 동일한 값을 사용합니다.

    • GoogleID 공급자로 선택했는지 확인합니다.

    • 규칙 그룹 아래에서 새 규칙 그룹 만들기를 선택합니다.

    Add Relying Party Application dialog

  3. 페이지 맨 아래에서 저장을 클릭합니다.

2단계: Google의 OpenID 커넥트 구현을 사용하기 위해 네임스페이스를 마이그레이션한 후 애플리케이션이 받을 ACS 토큰의 형식을 시뮬레이션하는 규칙 그룹 만들기

  1. ACS 관리 포털의 왼쪽 트리에서 규칙 그룹을 클릭하거나 시작 섹션에서 규칙 그룹 링크를 클릭합니다. 그런 다음 규칙 그룹 페이지에서 추가를 클릭합니다.

  2. 규칙 그룹 추가 페이지에서 새 규칙 그룹의 이름(예: ManualGoogleRuleGroup)을 제공합니다. 저장을 클릭합니다.

    Add Rule Group dialog

  3. 규칙 그룹 편집 페이지에서 추가 링크를 클릭합니다.

    Edit Rule Group dialog

  4. 클레임 규칙 추가 페이지에서 다음 값이 설정되어 있는지 확인하고 저장을 클릭합니다. Google에 대해 "모든 클레임 통과" 규칙이 생성됩니다.

    • If(조건) 섹션:

      • ID 공급자Google입니다.

      • 입력 클레임 유형 선택은 임의입니다.

      • 입력 클레임 값임의입니다.

    • Then(동작) 섹션:

      • 출력 클레임 유형첫 번째 클레임 유형 통과입니다.

      • 출력 클레임 값첫 번째 입력 클레임 값 통과입니다.

    • 규칙 정보 섹션:

      • 설명(선택 사항) 필드는 비워 둡니다.

    Add Claim Rule dialog

  5. 규칙 그룹 편집 페이지에서 추가 링크를 다시 클릭합니다.

  6. 클레임 규칙 추가 페이지에서 다음 값이 설정되어 있는지 확인하고 저장을 클릭합니다. 새 클레임 유형 주체가 추가된 경우를 시뮬레이션하는 Google에 대한 "정적" 클레임 규칙이 생성됩니다. 이 클레임 유형은 마이그레이션할 때 Google에서 응용 프로그램에 보내는 새로운 사용자 OpenID Connect 식별자입니다.

    • If(조건) 섹션:

      • ID 공급자Google입니다.

      • 입력 클레임 유형 선택은 임의입니다.

      • 입력 클레임 값임의입니다.

    • Then(동작) 섹션:

    • 규칙 정보 섹션:

      • 설명(선택 사항) 필드는 비워 둡니다.

    Add Claim Rull dialog

  7. 규칙 그룹 편집 페이지에서 저장을 클릭합니다.

3단계: 새 규칙 그룹을 애플리케이션의 테스트 인스턴스와 연결

  1. ACS 관리 포털의 왼쪽 트리에서 신뢰 당사자 응용 프로그램을 클릭하거나 시작 섹션에서 신뢰 당사자 응용 프로그램 링크를 클릭합니다. 그런 다음 신뢰 당사자 응용 프로그램 페이지에서 TestContosoApp를 클릭합니다.

  2. 신뢰 당사자 편집 페이지의 인증 설정 섹션에서 ManualGoogleRuleGroup을 선택하고 저장을 클릭합니다.

    Authentication Settings

이 시점에서 테스트 응용 프로그램에 대한 모든 Google 로그인 요청에 새 클레임 유형이 포함됩니다.

4단계: 애플리케이션이 주체 클레임 유형의 추가를 처리할 수 있는지 테스트

응용 프로그램을 테스트하여 응용 프로그램에서 새 클레임 유형(주체)이 존재하는 경우를 정상적으로 처리할 수 있는지 확인합니다. 일반적으로 잘 작성된 응용 프로그램에서는 새 클레임 유형이 토큰에 추가되는 경우를 안정적으로 처리해야 합니다. 문제가 발견되면 해결합니다. 필요에 따라 사용자의 기존 Open ID 2.0 식별자를 새 OpenID 커넥트 사용자 식별자 섹션으로 마이그레이션하여 사용자 식별자 매핑을 수행할 수도 있습니다.

5단계: 프로덕션 환경 마이그레이션

프로덕션 응용 프로그램(ProdContosoApp)을 다시 빌드하고 배포합니다. 마이그레이션 연습의 단계에 따라 네임스페이스(ns-contoso)를 마이그레이션하여 Google의 OpenID 커넥트 구현을 사용합니다. ProdContosoApp가 예상대로 작동하는지 확인합니다.