중요합니다
2025년 5월 1일부터 새 고객을 위해 Azure AD B2C를 더 이상 구매할 수 없습니다. FAQ에서 자세히 알아보세요.
이 문서에서는 OWIN(Open Web Interface for .NET)을 구현하는 웹 API에서 여러 토큰 발급자를 지원하는 기술을 설명합니다. 여러 토큰 엔드포인트를 지원하는 것은 Azure AD B2C(Azure Active Directory B2C) API 및 해당 애플리케이션을 한 도메인에서 다른 도메인으로 마이그레이션할 때 유용합니다. 예를 들어 login.microsoftonline.com, b2clogin.com, 또는 사용자 지정 도메인.
b2clogin.com, login.microsoftonline.com 또는 사용자 지정 도메인에서 발급한 토큰을 수락하기 위한 지원을 API에 추가하여 API에서 login.microsoftonline.com 발급된 토큰에 대한 지원을 제거하기 전에 준비된 방식으로 웹 애플리케이션을 마이그레이션할 수 있습니다.
다음 섹션에서는 Microsoft OWIN 미들웨어 구성 요소(Katana)를 사용하는 웹 API에서 여러 발급자를 사용하도록 설정하는 방법의 예를 제공합니다. 코드 예제는 Microsoft OWIN 미들웨어와 관련이 있지만 일반적인 기술은 다른 OWIN 라이브러리에 적용할 수 있어야 합니다.
필수 조건
이 문서의 단계를 계속하기 전에 다음 Azure AD B2C 리소스가 필요합니다.
토큰 발급자 엔드포인트 가져오기
먼저 API에서 지원하려는 각 발급자의 토큰 발급자 엔드포인트 URI를 가져와야 합니다. Azure AD B2C 테넌트에서 지원하는 b2clogin.com 및 login.microsoftonline.com 엔드포인트를 얻으려면 Azure Portal에서 다음 절차를 사용합니다.
먼저 기존 사용자 흐름 중 하나를 선택합니다.
Azure Portal에서 Azure AD B2C 테넌트로 이동합니다.
정책에서 사용자 흐름(정책)을 선택합니다.
기존 정책(예: B2C_1_signupsignin1)을 선택한 다음, 사용자 흐름 실행을 선택합니다.
페이지 위쪽에 있는 사용자 흐름 실행 제목 아래에서 하이퍼링크를 선택하여 해당 사용자 흐름에 대한 OpenID Connect 검색 엔드포인트로 이동합니다.
브라우저에서 열리는 페이지에서
issuer값을 기록합니다. 예를 들어:https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/도메인 선택 드롭다운을 사용하여 다른 도메인을 선택한 다음, 이전 두 단계를 다시 한 번 수행하고 해당
issuer값을 기록합니다.
이제 다음과 유사한 두 개의 URI가 기록됩니다.
https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
사용자 지정 정책
사용자 흐름 대신 사용자 지정 정책이 있는 경우 유사한 프로세스를 사용하여 발급자 URI를 가져올 수 있습니다.
- Azure AD B2C 테넌트로 이동합니다.
- ID 환경 프레임워크 선택
- 신뢰 당사자 정책 중 하나를 선택합니다(예: B2C_1A_signup_signin
- 도메인 선택 드롭다운을 사용하여 도메인 선택(예: yourtenant.b2clogin.com
- OpenID Connect 검색 엔드포인트 아래에 표시되는 하이퍼링크 선택
-
issuer값 기록 - 다른 도메인에 대해 4-6단계를 수행합니다(예: login.microsoftonline.com
샘플 코드 가져오기
이제 두 토큰 엔드포인트 URI가 모두 있으므로 코드를 업데이트하여 두 엔드포인트가 모두 유효한 발급자임을 지정해야 합니다. 예제를 진행하려면 샘플 애플리케이션을 다운로드하거나 복제한 다음 두 엔드포인트를 모두 유효한 발급자로 지원하도록 샘플을 업데이트합니다.
보관 파일 다운로드: active-directory-b2c-dotnet-webapp-and-webapi-master.zip
git clone https://github.com/Azure-Samples/active-directory-b2c-dotnet-webapp-and-webapi.git
Web API에서 여러 발급자 활성화
이 섹션에서는 두 토큰 발급자 엔드포인트가 모두 유효하도록 지정하도록 코드를 업데이트합니다.
Visual Studio에서 B2C-WebAPI-DotNet.sln 솔루션 열기
TaskService 프로젝트에서 편집기에서 TaskService\App_Start\Startup.Auth.cs 파일을 엽니다.
파일 맨 위에 다음
using지시문을 추가합니다.using System.Collections.Generic;정의에
ValidIssuers속성을TokenValidationParameters추가하고 이전 섹션에서 기록한 두 URI를 모두 지정합니다.TokenValidationParameters tvps = new TokenValidationParameters { // Accept only those tokens where the audience of the token is equal to the client ID of this app ValidAudience = ClientId, AuthenticationType = Startup.DefaultPolicy, ValidIssuers = new List<string> { "https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/", "https://{your-b2c-tenant}.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/"//, //"https://your-custom-domain/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/" } };
TokenValidationParameters는 MSAL.NET에서 제공되며, Startup.Auth.cs 코드의 다음 섹션에서 OWIN 미들웨어에 의해 사용됩니다. 여러 유효한 발급자를 지정하면 OWIN 애플리케이션 파이프라인은 두 토큰 엔드포인트가 모두 유효한 발급자임을 인식합니다.
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
// This SecurityTokenProvider fetches the Azure AD B2C metadata & from the OpenID Connect metadata endpoint
AccessTokenFormat = new JwtFormat(tvps, new tCachingSecurityTokenProvider(String.Format(AadInstance, ultPolicy)))
});
앞에서 설명한 것처럼 다른 OWIN 라이브러리는 일반적으로 여러 발급자를 지원하기 위한 유사한 기능을 제공합니다. 모든 라이브러리에 대한 예제를 제공하는 것은 이 문서의 범위를 벗어나지만 대부분의 라이브러리에 유사한 기술을 사용할 수 있습니다.
웹앱에서 엔드포인트 전환
이제 웹 API에서 두 URI가 모두 지원되므로 이제 b2clogin.com 엔드포인트에서 토큰을 검색하도록 웹 애플리케이션을 업데이트해야 합니다.
예를 들어 TaskWebApp 프로젝트의 TaskWebApp\ida:AadInstance 파일에서 값을 수정하여 새 엔드포인트를 사용하도록 샘플 웹 애플리케이션을 구성할 수 있습니다.
TaskWebApp의 ida:AadInstance 값이 대신 {your-b2c-tenant-name}.b2clogin.com를 참조하도록 login.microsoftonline.com 값을 변경합니다.
전에:
<!-- Old value -->
<add key="ida:AadInstance" value="https://login.microsoftonline.com/tfp/{0}/{1}" />
(B2C 테넌트의 이름으로 {your-b2c-tenant}를 변경한 후):
<!-- New value -->
<add key="ida:AadInstance" value="https://{your-b2c-tenant}.b2clogin.com/tfp/{0}/{1}" />
웹앱을 실행하는 동안 엔드포인트 문자열이 생성되면 토큰을 요청할 때 b2clogin.com 기반 엔드포인트가 사용됩니다.
사용자 지정 도메인을 사용하는 경우:
<!-- Custom domain -->
<add key="ida:AadInstance" value="https://custom-domain/{0}/{1}" />
다음 단계
이 문서에서는 여러 발급자 엔드포인트의 토큰을 수락하도록 Microsoft OWIN 미들웨어(Katana)를 구현하는 웹 API를 구성하는 방법을 제시했습니다. 알 수 있듯이 사용자 고유의 테넌트에 대해 이러한 프로젝트를 빌드하고 실행하려는 경우 변경해야 하는 TaskService 및 TaskWebApp 프로젝트의 Web.Config 파일에는 몇 가지 다른 문자열이 있습니다. 프로젝트를 직접 실행하는 모습을 보고 싶다면 적절하게 수정할 수 있습니다. 다만, 그렇게 하는 전체적인 절차는 이 문서의 범위를 벗어납니다.
Azure AD B2C에서 내보내는 다양한 유형의 보안 토큰에 대한 자세한 내용은 Azure Active Directory B2C의 토큰 개요를 참조하세요.