토큰 발급 이벤트에 대한 사용자 지정 클레임 공급자 구성
이 문서에서는 토큰 발급 시작 이벤트에 대한 사용자 지정 클레임 공급자를 구성하는 방법을 설명합니다. 기존 Azure Functions REST API를 사용하여 사용자 지정 인증 확장을 등록하고 REST API에서 구문 분석할 것으로 예상되는 특성을 추가합니다. 사용자 지정 인증 확장을 테스트하려면 샘플 OpenID Connect 애플리케이션을 등록하여 토큰을 가져오고 클레임을 확인합니다.
필수 조건
- Azure Functions를 만들 수 있는 Azure 구독입니다. 기존 Azure 계정이 없는 경우 평가판에 등록하거나 계정을 만들 때 Visual Studio Subscription 이점을 사용합니다.
- Azure Functions에 배포된 토큰 발급 이벤트에 대해 구성된 HTTP 트리거 함수입니다. 없는 경우 Azure Functions에서 토큰 발급 시작 이벤트에 대한 REST API 만들기의 단계를 따릅니다.
- 사용자 지정 인증 확장 개요에서 다루는 개념에 대한 기본적인 이해입니다.
- Microsoft Entra ID 테넌트. 이 방법 가이드에는 고객 또는 인력 테넌트를 사용할 수 있습니다.
- 외부 테넌트의 경우 등록 및 로그인 사용자 흐름을 사용합니다.
1단계: 사용자 지정 인증 확장 등록
이제 Microsoft Entra ID에서 Azure 함수를 호출하는 데 사용되는 사용자 지정 인증 확장을 구성합니다. 사용자 지정 인증 확장에는 REST API 엔드포인트에 대한 정보, REST API에서 구문 분석하는 클레임, REST API에 인증하는 방법이 포함됩니다. Azure 함수 앱에 사용자 지정 인증 확장을 등록하려면 다음 단계를 따릅니다.
참고 항목
최대 100개의 사용자 지정 확장 정책을 보유할 수 있습니다.
사용자 지정 인증 확장 등록
- 최소한 애플리케이션 관리자 및 인증 관리자로 Azure Portal에 로그인합니다.
- Microsoft Entra ID를 검색하여 선택하고 엔터프라이즈 애플리케이션을 선택합니다.
- 사용자 지정 인증 확장을 선택한 다음 사용자 지정 확장 만들기를 선택합니다.
- 기본 사항에서 TokenIssuanceStart 이벤트 유형을 선택하고 다음을 선택합니다.
- 엔드포인트 구성에서 다음 속성을 입력합니다.
- 이름 - 사용자 지정 인증 확장의 이름입니다. 예를 들어 토큰 발급 이벤트입니다.
- 대상 URL - Azure 함수 URL의
{Function_Url}
입니다. Azure 함수 앱의 개요 페이지로 이동한 다음 만든 함수를 선택합니다. 함수 개요 페이지에서 함수 URL 가져오기를 선택하고 복사 아이콘을 사용하여 customauthenticationextension_extension(시스템 키) URL을 복사합니다. - 설명 - 사용자 지정 인증 확장에 대한 설명입니다.
- 다음을 선택합니다.
- API 인증에서 새 앱 등록 만들기 옵션을 선택하여 함수 앱을 나타내는 앱 등록을 만듭니다.
- 앱에 이름(예: Azure Functions 인증 이벤트 API)을 지정합니다.
- 다음을 선택합니다.
- 클레임에서 사용자 지정 인증 확장이 REST API에서 구문 분석될 것으로 예상되는 특성을 입력하고 토큰에 병합됩니다. 다음 클레임을 추가합니다.
- dateOfBirth
- customRoles
- apiVersion
- correlationId
- 다음 및 만들기를 선택하여 사용자 지정 인증 확장 및 연결된 애플리케이션 등록을 등록합니다.
- Azure 함수 앱에서 Azure 함수에 대한 인증을 구성하는 데 필요한 API 인증 아래의 앱 ID를 확인합니다.
1.2 관리자 동의 허용
사용자 지정 인증 확장이 만들어지면 API에 권한을 부여해야 합니다. 사용자 지정 인증 확장은 client_credentials
및 Receive custom authentication extension HTTP requests
권한을 사용하여 Azure 함수 앱을 인증합니다.
새 사용자 지정 인증 확장의 개요 페이지를 엽니다. ID 공급자를 추가할 때 필요하므로 API 인증 아래의 앱 ID를 기록해 둡니다.
API 인증에서 사용 권한 부여를 선택합니다.
새 창이 열리고 로그인하면 사용자 지정 인증 확장 HTTP 요청을 수신할 수 있는 권한을 요청합니다. 이를 통해 사용자 지정 인증 확장이 API에 인증할 수 있습니다. 수락을 선택합니다.
2단계: 보강된 토큰을 받도록 OpenID Connect 앱 구성
토큰을 가져와서 사용자 지정 인증 확장을 테스트하려면 https://jwt.ms 앱을 사용하면 됩니다. 토큰의 디코딩된 콘텐츠를 표시하는 Microsoft 자체 웹 애플리케이션입니다(토큰의 콘텐츠는 브라우저를 떠나지 않음).
2.1 테스트 웹 애플리케이션 등록
다음 단계에 따라 jwt.ms 웹 애플리케이션을 등록합니다.
Azure Portal의 홈 페이지에서 Microsoft Entra ID를 선택합니다.
앱 등록>새 등록을 선택합니다.
애플리케이션의 이름을 입력합니다. 예를 들어 내 테스트 애플리케이션입니다.
지원되는 계정 유형에서 이 조직 디렉터리의 계정만을 선택합니다.
리디렉션 URI의 플랫폼 선택 드롭다운에서 웹을 선택한 다음, URL 텍스트 상자에
https://jwt.ms
를 입력합니다.등록을 선택하여 앱 등록을 완료합니다.
앱 등록의 개요 페이지에서 애플리케이션(클라이언트) ID를 복사합니다. 이후 단계에서 앱 ID를
{App_to_enrich_ID}
라고 합니다. Microsoft Graph에서는 appId 속성으로 참조됩니다.
2.2 암시적 흐름 사용
jwt.ms 테스트 애플리케이션은 암시적 흐름을 사용합니다. 내 테스트 애플리케이션 등록 시 암시적 흐름을 사용하도록 설정합니다.
- 관리에서 인증을 선택합니다.
- 암시적 허용 및 하이브리드 흐름 아래에서 ID 토큰(암시적 및 하이브리드 흐름에 사용됨) 확인란을 선택합니다.
- 저장을 선택합니다.
2.3 클레임 매핑 정책에 앱 사용
클레임 매핑 정책은 사용자 지정 인증 확장에서 반환된 특성이 토큰에 매핑되는 특성을 선택하는 데 사용됩니다. 토큰을 보강할 수 있도록 하려면 애플리케이션 등록을 명시적으로 사용하도록 설정하여 매핑된 클레임을 수락해야 합니다.
- 내 테스트 애플리케이션 등록의 관리에서 매니페스트를 선택합니다.
- 매니페스트에서
acceptMappedClaims
특성을 찾아 값을true
로 설정합니다. accessTokenAcceptedVersion
를2
로 설정합니다.- 저장을 선택하여 변경 내용을 저장합니다.
다음 JSON 코드 조각은 이러한 속성을 구성하는 방법을 보여 줍니다.
{
"id": "22222222-0000-0000-0000-000000000000",
"acceptMappedClaims": true,
"accessTokenAcceptedVersion": 2,
...
}
Warning
악의적인 행위자가 앱에 대한 클레임 매핑 정책을 만들 수 있는 다중 테넌트 앱의 경우 acceptMappedClaims
속성을 true
로 설정하지 마세요. 대신 사용자 지정 서명 키를 구성합니다.
다음 단계인 앱에 사용자 지정 클레임 공급자 클레임으로 진행합니다.
3단계: 앱에 사용자 지정 클레임 공급자 클레임
토큰이 사용자 지정 인증 확장에서 들어오는 클레임과 함께 발급되려면 애플리케이션에 사용자 지정 클레임 공급자를 할당해야 합니다. 이는 토큰 대상 그룹을 기반으로 하므로 ID 토큰으로 클레임을 받으려면 클라이언트 애플리케이션에 공급자를 할당해야 하고, 액세스 토큰으로 클레임을 받으려면 리소스 애플리케이션에 공급자를 할당해야 합니다. 사용자 지정 클레임 공급자는 토큰 발급 시작 이벤트 수신기로 구성된 사용자 지정 인증 확장을 사용합니다. 사용자 지정 클레임 공급자에서 클레임의 전체 또는 하위 집합이 토큰에 매핑되는지 여부를 선택할 수 있습니다.
참고 항목
애플리케이션과 사용자 지정 확장 간에는 250개의 고유한 할당만 만들 수 있습니다. 동일한 사용자 지정 확장 호출을 여러 앱에 적용하려면 authenticationEventListeners Microsoft Graph API를 사용하여 여러 애플리케이션에 대한 수신기를 만드는 것이 좋습니다. 이는 Azure Portal에서는 지원되지 않습니다.
다음 단계에 따라 내 테스트 애플리케이션을 사용자 지정 인증 확장에 연결합니다.
사용자 지정 인증 확장을 사용자 지정 클레임 공급자 원본으로 할당하려면
Azure Portal의 홈 페이지에서 Microsoft Entra ID를 선택합니다.
엔터프라이즈 애플리케이션을 선택한 다음 관리에서 모든 애플리케이션을 선택합니다. 목록에서 내 테스트 애플리케이션을 찾아 선택합니다.
내 테스트 애플리케이션의 개요 페이지에서 관리로 이동하여 SSO(Single Sign-On)를 선택합니다.
특성 및 클레임으로 이동하고 편집을 선택합니다.
고급 설정 메뉴를 확장합니다.
사용자 지정 클레임 공급자 옆에 있는 구성을 선택합니다.
사용자 지정 클레임 공급자 드롭다운 상자를 확장하고 이전에 만든 토큰 발급 이벤트를 선택합니다.
저장을 선택합니다.
다음으로, 토큰에 클레임으로 발급되어야 하는 사용자 지정 클레임 공급자의 특성을 할당합니다.
새 클레임 추가를 선택하여 새 클레임을 추가합니다. 발급하려는 클레임에 대해 이름(예: dateOfBirth)을 지정합니다.
원본에서 특성을 선택하고 원본 특성 드롭다운 상자에서 customClaimsProvider.dateOfBirth를 선택합니다.
저장을 선택합니다.
이 프로세스를 반복하여 customClaimsProvider.customRoles, customClaimsProvider.apiVersion, customClaimsProvider.correlationId 특성과 해당 이름을 추가합니다. 클레임 이름을 특성 이름과 일치시키는 것이 좋습니다.
4단계: Azure Function 보호
Microsoft Entra 사용자 지정 인증 확장은 서버 간 흐름을 사용하여 HTTP Authorization
헤더에서 Azure Function으로 보내는 액세스 토큰을 가져옵니다. 특히 프로덕션 환경에서 Azure에 함수를 게시할 때 권한 부여 헤더에서 보낸 토큰의 유효성을 검사해야 합니다.
Azure Function을 보호하려면 다음 단계에 따라 들어오는 토큰의 유효성을 검사하기 위해 Azure Functions 인증 이벤트 API 애플리케이션 등록과 Microsoft Entra 인증을 통합합니다. 테넌트 형식에 따라 다음 탭 중 하나를 선택합니다.
참고 항목
Azure 함수 앱이 사용자 지정 인증 확장이 등록된 테넌트가 아닌 다른 Azure 테넌트에서 호스트되는 경우 Open ID Connect 탭을 선택합니다.
4.1 Microsoft Entra ID 공급자 사용
다음 단계에서 Microsoft Entra를 Azure 함수 앱에 ID 공급자로 추가합니다.
Azure Portal에서 이전에 게시한 함수 앱을 찾아서 선택합니다.
설정에서 인증을 선택합니다.
ID 공급자 추가를 선택합니다.
Microsoft를 ID 공급자로 선택합니다.
테넌트 형식으로 인력을 선택합니다.
앱 등록에서 앱 등록 유형을 이 디렉터리에서 기존 앱 등록 선택으로 선택하고 사용자 지정 클레임 공급자를 등록할 때 이전에 만든 Azure Functions 인증 이벤트 API 앱 등록을 선택합니다.
다음 발급자 URL인
https://login.microsoftonline.com/{tenantId}/v2.0
을 입력합니다. 여기서{tenantId}
는 인력 테넌트의 테넌트 ID입니다.클라이언트 애플리케이션 요구 사항에서 특정 클라이언트 애플리케이션의 요청 허용을 선택하고
99045fe1-7639-4a75-9d4a-577b6ca3810f
를 입력합니다.테넌트 요구 사항에서 특정 테넌트의 요구 사항 허용을 선택한 후 인력 테넌트 ID를 입력합니다.
인증되지 않은 요청에서 ID 공급자로 HTTP 401 권한 없음을 선택합니다.
토큰 저장소 옵션을 선택 취소합니다.
추가를 선택하여 Azure Function에 인증을 추가합니다.
4.2 OpenID Connect ID 공급자 사용
Microsoft ID 공급자를 구성한 경우 이 단계를 건너뜁니다. 그러지 않으면 Azure Function이 사용자 지정 인증 확장이 등록된 테넌트와 다른 테넌트에서 호스트되는 경우 다음 단계에 따라 함수를 보호합니다.
클라이언트 암호 만들기
- Azure Portal의 홈 페이지에서 Microsoft Entra ID>앱 등록을 선택합니다.
- 이전에 만든 Azure Functions 인증 이벤트 API 앱 등록을 선택합니다.
- 인증서 및 비밀>클라이언트 암호>새 클라이언트 암호를 선택합니다.
- 비밀 만료 날짜를 선택하거나 사용자 지정 수명을 지정하고 설명을 추가한 후 추가를 선택합니다.
- 클라이언트 애플리케이션 코드에서 사용할 비밀 값을 기록합니다. 이 비밀 값은 이 페이지에서 나가면 다시 표시되지 않습니다.
Azure 함수 앱에 OpenID Connect ID 공급자를 추가합니다.
이전에 게시한 함수 앱을 찾아 선택합니다.
설정에서 인증을 선택합니다.
ID 공급자 추가를 선택합니다.
ID 공급자로 OpenID Connect를 선택합니다.
Contoso Microsoft Entra ID와 같은 이름을 제공합니다.
메타데이터 항목에서 문서 URL에 다음 URL을 입력합니다.
{tenantId}
를 Microsoft Entra 테넌트 ID로 바꿉니다.https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration
앱 등록에서 이전에 만든 Azure Functions 인증 이벤트 API 앱 등록의 애플리케이션 ID(클라이언트 ID)를 입력합니다.
Azure 함수로 돌아간 후, 앱 등록에서 클라이언트 암호를 입력합니다.
토큰 저장소 옵션을 선택 취소합니다.
추가를 선택하여 OpenID Connect ID 공급자를 추가합니다.
5단계: 애플리케이션 테스트
사용자 지정 클레임 공급자를 테스트하려면 다음 단계를 따릅니다.
새 프라이빗 브라우저를 열고 다음 URL을 통해 로그인합니다.
https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/authorize?client_id={App_to_enrich_ID}&response_type=id_token&redirect_uri=https://jwt.ms&scope=openid&state=12345&nonce=12345
{tenantId}
를 테넌트 ID, 테넌트 이름 또는 확인된 도메인 이름 중 하나로 바꿉니다. 예들 들어contoso.onmicrosoft.com
입니다.{App_to_enrich_ID}
를 내 테스트 애플리케이션 클라이언트 ID로 바꿉니다.로그인하면
https://jwt.ms
에 디코딩된 토큰이 표시됩니다. Azure Function의 클레임이 디코딩된 토큰(예:dateOfBirth
)에 표시되는지 확인합니다.