Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Importante
A partir de 1º de maio de 2025, o Azure AD B2C não estará mais disponível para compra para novos clientes. Saiba mais nas nossas Perguntas Frequentes.
Este artigo descreve uma técnica para habilitar o suporte para vários emissores de token em APIs da Web que implementam a Open Web Interface for .NET (OWIN). O suporte a múltiplos endpoints de token é útil se estiver a migrar APIs do Azure Active Directory B2C (Azure AD B2C) e os seus aplicativos de um domínio para outro. Por exemplo, de login.microsoftonline.com para b2clogin.com ou para um domínio personalizado.
Ao adicionar suporte em sua API para aceitar tokens emitidos por b2clogin.com, login.microsoftonline.com ou um domínio personalizado, você pode migrar seus aplicativos Web de forma faseada antes de remover o suporte para tokens emitidos por login.microsoftonline.com da API.
As seções a seguir apresentam um exemplo de como habilitar vários emissores em uma API da Web que usa os componentes de middleware Microsoft OWIN (Katana). Embora os exemplos de código sejam específicos para o middleware Microsoft OWIN, a técnica geral deve ser aplicável a outras bibliotecas OWIN.
Pré-requisitos
Você precisa dos seguintes recursos do Azure AD B2C antes de continuar com as etapas neste artigo:
- Fluxos de usuário ou políticas personalizadas criadas em seu locatário
Obter pontos de extremidade do emissor de token
Primeiro, você precisa obter os URIs de ponto de extremidade do emissor de token para cada emissor ao qual deseja oferecer suporte em sua API. Para obter os pontos de extremidade b2clogin.com e login.microsoftonline.com suportados pelo locatário do Azure AD B2C, use o procedimento a seguir no portal do Azure.
Comece selecionando um dos seus fluxos de usuário existentes:
Navegue até o seu cliente do Azure AD B2C no portal do Azure
Em Políticas, selecione Fluxos de usuário (políticas)
Selecione uma política existente, por exemplo, B2C_1_signupsignin1 e, em seguida, selecione Executar fluxo de usuário
No cabeçalho Executar fluxo de utilizador na parte superior da página, selecione o hiperlink para navegar até ao ponto de descoberta do OpenID Connect para esse fluxo de utilizador.
Na página que se abre no seu browser, registe o
issuer
valor, por exemplo:https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
Utilize a lista suspensa Selecionar domínio para selecionar o outro domínio, depois execute as duas etapas anteriores mais uma vez e registe o respetivo valor
issuer
.
Agora você deve ter dois URIs registrados que são semelhantes a:
https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
Políticas personalizadas
Se você tiver políticas personalizadas em vez de fluxos de usuário, poderá usar um processo semelhante para obter os URIs do emissor.
- Navegue até a instância do Azure AD B2C
- Selecionar Estrutura de Experiência de Identidade
- Selecione uma de suas políticas de terceira parte confiável, por exemplo, B2C_1A_signup_signin
- Utilize a lista suspensa Selecionar domínio para selecionar um domínio, por exemplo yourtenant.b2clogin.com
- Selecione o hiperlink exibido em Ponto de extremidade de descoberta do OpenID Connect
- Registar o
issuer
valor - Execute as etapas 4 a 6 para o outro domínio, por exemplo, login.microsoftonline.com
Obter o código de exemplo
Agora que você tem ambos os URIs de ponto de extremidade de token, precisa atualizar seu código para especificar que ambos os pontos de extremidade são emissores válidos. Para seguir um exemplo, descarregue ou clone a aplicação de exemplo e, em seguida, atualize a aplicação para oferecer suporte a ambos os endpoints como emissores válidos.
Descarregue o arquivo: active-directory-b2c-dotnet-webapp-and-webapi-master.zip
git clone https://github.com/Azure-Samples/active-directory-b2c-dotnet-webapp-and-webapi.git
Habilitar vários emissores na API da Web
Nesta seção, você atualiza o código para especificar que ambos os pontos de extremidade do emissor de token são válidos.
Abra a solução B2C-WebAPI-DotNet.sln no Visual Studio
No projeto TaskService , abra o arquivo TaskService\App_Start\Startup.Auth.cs no editor
Adicione a seguinte
using
diretiva à parte superior do arquivo:using System.Collections.Generic;
Adicione a propriedade
ValidIssuers
à definiçãoTokenValidationParameters
e especifique os dois URIs registados na seção anterior.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
é fornecido pela MSAL.NET e é consumido pelo middleware OWIN na próxima seção do código em Startup.Auth.cs. Com vários emissores válidos especificados, o pipeline de aplicação OWIN é informado de que ambos os endpoints de token são emissores válidos.
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)))
});
Como mencionado anteriormente, outras bibliotecas OWIN normalmente fornecem um recurso semelhante para suportar vários emissores. Embora fornecer exemplos para cada biblioteca esteja fora do escopo deste artigo, você pode usar uma técnica semelhante para a maioria das bibliotecas.
Alternar endpoints na aplicação Web
Com os dois URIs agora suportados pela sua API da Web, você precisa agora atualizar sua aplicação web para que recupere tokens do ponto final b2clogin.com.
Por exemplo, você pode configurar a aplicação web de exemplo para usar o novo endpoint modificando o valor do arquivo ida:AadInstance
do projeto TaskWebApp.
Altere o ida:AadInstance
valor no Web.config de TaskWebApp para que ele faça referência {your-b2c-tenant-name}.b2clogin.com
em vez de login.microsoftonline.com
.
Antes:
<!-- Old value -->
<add key="ida:AadInstance" value="https://login.microsoftonline.com/tfp/{0}/{1}" />
Depois (substitua {your-b2c-tenant}
pelo nome do seu locatário B2C):
<!-- New value -->
<add key="ida:AadInstance" value="https://{your-b2c-tenant}.b2clogin.com/tfp/{0}/{1}" />
Quando as cadeias de caracteres de ponto de extremidade são construídas durante a execução do aplicativo Web, os pontos de extremidade baseados em b2clogin.com são usados quando ele solicita tokens.
Ao usar o domínio personalizado:
<!-- Custom domain -->
<add key="ida:AadInstance" value="https://custom-domain/{0}/{1}" />
Próximos passos
Este artigo apresentou um método de configurar uma web API implementando o middleware Microsoft OWIN (Katana) para aceitar tokens de múltiplos endpoints emissores. Como você pode notar, há várias outras cadeias de caracteres nos arquivos Web.Config dos projetos TaskService e TaskWebApp que precisariam ser alteradas se você quiser criar e executar esses projetos em seu próprio locatário. Você é bem-vindo para modificar os projetos adequadamente se quiser vê-los em ação, no entanto, um passo a passo completo de fazê-lo está fora do escopo deste artigo.
Para obter mais informações sobre os diferentes tipos de tokens de segurança emitidos pelo Azure AD B2C, consulte Visão geral de tokens no Azure Ative Directory B2C.