다음을 통해 공유


Azure AD B2C를 사용하여 Azure API Management API 보호

중요합니다

2025년 5월 1일부터 새 고객을 위해 Azure AD B2C를 더 이상 구매할 수 없습니다. FAQ에서 자세히 알아보세요.

Azure AD B2C(Azure Active Directory B2C)로 인증된 클라이언트로 Azure API Management API에 대한 액세스를 제한하는 방법을 알아봅니다. 이 문서의 지침에 따라 Azure API Management에서 유효한 Azure AD B2C 발급 액세스 토큰을 포함하는 요청으로만 액세스를 제한하는 인바운드 정책을 만들고 테스트합니다.

필수 조건

시작하기 전에 다음 리소스가 있는지 확인합니다.

Azure AD B2C 애플리케이션 ID 가져오기

Azure AD B2C를 사용하여 Azure API Management에서 API를 보호하는 경우 Azure API Management 에서 만드는 인바운드 정책에 대한 몇 가지 값이 필요합니다. 먼저 Azure AD B2C 테넌트에서 이전에 만든 애플리케이션의 애플리케이션 ID를 기록합니다. 만든 애플리케이션을 사용하여 필수 구성 요소를 충족하는 경우 webapp1의 애플리케이션 ID를 사용합니다.

Azure AD B2C 테넌트에 애플리케이션을 등록하려면 새로운 통합 앱 등록 환경 또는 레거시 애플리케이션 환경을 사용할 수 있습니다 . 새 등록 환경에 대해 자세히 알아봅니다.

  1. Azure Portal에 로그인합니다.
  2. 여러 테넌트에 액세스할 수 있는 경우 상단 메뉴의 설정 아이콘을 선택하여 디렉터리 + 구독 메뉴에서 Azure AD B2C 테넌트로 전환합니다.
  3. 왼쪽 창에서 Azure AD B2C를 선택합니다. 또는 모든 서비스를 선택한 다음 Azure AD B2C를 검색하여 선택할 수 있습니다.
  4. 앱 등록을 선택한 다음 소유 애플리케이션 탭을 선택합니다.
  5. Webapp1 또는 이전에 만든 다른 애플리케이션의 애플리케이션(클라이언트) ID 열에 값을 기록합니다.

토큰 발급자 엔드포인트 가져오기

다음으로, Azure AD B2C 사용자 흐름 중 하나에 대해 잘 알려진 구성 URL을 가져옵니다. Azure API Management에서 지원하려는 토큰 발급자 엔드포인트 URI도 필요합니다.

  1. Azure Portal에서 Azure AD B2C 테넌트로 이동합니다.

  2. 정책 아래에서 사용자 흐름을 선택합니다.

  3. 기존 정책(예: B2C_1_signupsignin1)을 선택한 다음 사용자 흐름 실행을 선택합니다.

  4. 페이지 위쪽의 실행 사용자 흐름 제목 아래에 표시되는 하이퍼링크의 URL을 기록합니다. 이 URL은 사용자 흐름에 대해 잘 알려진 OpenID Connect 검색 엔드포인트이며, Azure API Management에서 인바운드 정책을 구성할 때 다음 섹션에서 사용합니다.

    Azure Portal의

  5. 하이퍼링크를 선택하여 OpenID Connect 잘 알려진 구성 페이지로 이동합니다.

  6. 브라우저에서 열리는 페이지에서 값을 기록합니다 issuer . 다음은 그 예입니다.

    https://<tenant-name>.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/

    Azure API Management에서 API를 구성할 때 다음 섹션에서 이 값을 사용합니다.

이제 다음 섹션에서 사용하기 위해 두 개의 URL인 OpenID Connect 잘 알려진 구성 엔드포인트 URL과 발급자 URI를 기록해야 합니다. 다음은 그 예입니다.

https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_signupsignin1/v2.0/.well-known/openid-configuration
https://<tenant-name>.b2clogin.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/

Azure API Management에서 인바운드 정책 구성

이제 API 호출의 유효성을 검사하는 인바운드 정책을 Azure API Management에 추가할 준비가 되었습니다. 액세스 토큰에서 대상 그룹 및 발급자를 확인하는 JWT(JSON 웹 토큰) 유효성 검사 정책을 추가하면 유효한 토큰이 있는 API 호출만 수락되도록 할 수 있습니다.

  1. Azure Portal에서 Azure API Management 인스턴스로 이동합니다.

  2. API를 선택합니다.

  3. Azure AD B2C를 사용하여 보호하려는 API를 선택합니다.

  4. 디자인 탭을 선택합니다.

  5. 인바운드 처리에서 /<를 선택하여> 정책 코드 편집기를 엽니다.

  6. 정책 내에 다음 <validate-jwt> 태그를 <inbound> 배치한 다음 다음을 수행합니다.

    a. url 요소에서 <openid-config> 값을 정책의 잘 알려진 구성 URL로 업데이트하십시오.
    b. <audience> B2C 테넌트에서 이전에 만든 애플리케이션의 애플리케이션 ID(예: webapp1)로 요소를 업데이트합니다.
    다. <issuer> 앞에서 기록한 토큰 발급자 엔드포인트로 요소를 업데이트합니다.

    <policies>
        <inbound>
            <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
                <openid-config url="https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_signupsignin1/v2.0/.well-known/openid-configuration" />
                <audiences>
                    <audience>00001111-aaaa-2222-bbbb-3333cccc4444</audience>
                </audiences>
                <issuers>
                    <issuer>https://<tenant-name>.b2clogin.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/</issuer>
                </issuers>
            </validate-jwt>
            <base />
        </inbound>
        <backend> <base /> </backend>
        <outbound> <base /> </outbound>
        <on-error> <base /> </on-error>
    </policies>
    

여러 애플리케이션 및 발급자 지원

여러 애플리케이션은 일반적으로 단일 REST API와 상호 작용합니다. API가 여러 애플리케이션에 대한 토큰을 수락할 수 있도록 하려면 Azure API Management 인바운드 정책의 <audiences> 요소에 해당 애플리케이션 ID를 추가합니다.

<!-- Accept tokens intended for these recipient applications -->
<audiences>
    <audience>00001111-aaaa-2222-bbbb-3333cccc4444</audience>
    <audience>11112222-bbbb-3333-cccc-4444dddd5555</audience>
</audiences>

마찬가지로, 여러 토큰 발급자를 지원하려면 Azure API Management 인바운드 정책의 <issuers> 요소에 해당 엔드포인트 URI를 추가합니다.

<!-- Accept tokens from multiple issuers -->
<issuers>
    <issuer>https://<tenant-name>.b2clogin.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/</issuer>
    <issuer>https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/</issuer>
</issuers>

b2clogin.com으로 마이그레이션하십시오

레거시 login.microsoftonline.com 엔드포인트에서 발급한 토큰의 유효성을 검사하는 Azure API ManagementM API가 있는 경우 API 및 API를 호출하는 애플리케이션을 마이그레이션하여 b2clogin.com 발급한 토큰을 사용해야 합니다.

이 일반 프로세스에 따라 스테이징된 마이그레이션을 수행할 수 있습니다.

  1. b2clogin.com 및 login.microsoftonline.com 발급된 토큰에 대한 Azure API Management 인바운드 정책에 지원을 추가합니다.
  2. 애플리케이션을 한 번에 하나씩 업데이트하여 b2clogin.com 엔드포인트에서 토큰을 가져옵니다.
  3. 모든 애플리케이션이 b2clogin.com 토큰을 올바르게 가져온 후 API에서 login.microsoftonline.com 발급된 토큰에 대한 지원을 제거합니다.

다음 예제 Azure API Management 인바운드 정책은 b2clogin.com 및 login.microsoftonline.com 발급된 토큰을 수락하는 방법을 보여 줍니다. 또한 정책은 두 애플리케이션의 API 요청을 지원합니다.

<policies>
    <inbound>
        <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
            <openid-config url="https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_signupsignin1/v2.0/.well-known/openid-configuration" />
            <audiences>
                <audience>00001111-aaaa-2222-bbbb-3333cccc4444</audience>
                <audience>11112222-bbbb-3333-cccc-4444dddd5555</audience>
            </audiences>
            <issuers>
                <issuer>https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/</issuer>
                <issuer>https://<tenant-name>.b2clogin.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/</issuer>
            </issuers>
        </validate-jwt>
        <base />
    </inbound>
    <backend> <base /> </backend>
    <outbound> <base /> </outbound>
    <on-error> <base /> </on-error>
</policies>

다음 단계

Azure API Management 정책에 대한 자세한 내용은 Azure API Management 정책 참조 인덱스입니다.

OWIN 기반 웹 API 및 해당 애플리케이션을 b2clogin.com 마이그레이션하는 방법에 대한 자세한 내용은 OWIN 기반 웹 API를 b2clogin.com 마이그레이션을 참조하세요.