Compartilhar via


Migrar uma API Web baseada em OWIN para b2clogin.com ou um domínio personalizado

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 em nossas perguntas frequentes.

Este artigo descreve uma técnica para habilitar o suporte para vários emissores de token em APIs Web que implementam a Interface Web Aberta para .NET (OWIN). O suporte a vários pontos de extremidade de token é útil quando você migra as APIs do Azure AD B2C (Azure Active Directory B2C) e os respectivos aplicativos de um domínio para outro. Por exemplo, de login.microsoftonline.com a b2clogin.com ou a um domínio personalizado.

Adicionando 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 maneira preparada 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 Web que usa os componentes de middleware do Microsoft OWIN (Katana). Embora os exemplos de código sejam específicos para o middleware OWIN da Microsoft, a técnica geral deve ser aplicável a outras bibliotecas OWIN.

Pré-requisitos

Você precisa dos seguintes recursos do Azure AD B2C em vigor antes de continuar com as etapas deste artigo:

Obter pontos de extremidade do emissor do token

Primeiro, você precisa obter as URIs de ponto de extremidade do emissor de token para cada emissor que você deseja dar suporte em sua API. Para obter os pontos de extremidade b2clogin.com e login.microsoftonline.com com suporte no locatário do Azure AD B2C, use o procedimento a seguir no portal do Azure.

Comece selecionando um dos fluxos de usuário existentes:

  1. Navegue até o locatário do Azure AD B2C no portal do Azure

  2. Em Políticas, selecione Fluxos de usuário (políticas)

  3. Selecione uma política existente, por exemplo , B2C_1_signupsignin1 e, em seguida, selecione Executar fluxo de usuário

  4. No cabeçalho Executar fluxo de usuário próximo à parte superior da página, selecione o hiperlink para navegar até o ponto de extremidade de descoberta do OpenID Connect para esse fluxo do usuário.

    Hiperlink de URI conhecido na página Executar agora do portal do Azure

  5. Na página que se abre no navegador, registre o valor de issuer, por exemplo:

    https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/

  6. Use a lista suspensa Selecionar domínio para selecionar o outro domínio e, em seguida, execute novamente as duas etapas anteriores e registre o valor issuer.

Agora você deve ter dois URIs registrados 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 as URIs do emissor.

  1. Navegue até o locatário do Azure AD B2C
  2. Selecionar Estrutura de Experiência de Identidade
  3. Selecione uma das políticas de terceira parte confiável, por exemplo, B2C_1A_signup_signin
  4. Use a lista suspensa Selecionar domínio para selecionar um domínio, por exemplo, yourtenant.b2clogin.com.
  5. Selecione o hiperlink exibido em Ponto de extremidade de descoberta do OpenID Connect.
  6. Registre o valor issuer
  7. Execute as etapas 4-6 para o outro domínio, por exemplo , login.microsoftonline.com

Obter o código de exemplo

Agora que você tem ambas as URIs de endereços finais de token, você precisa atualizar seu código para especificar que ambos os endereços finais são emissores válidos. Para acompanhar um exemplo, baixe ou clone o aplicativo de exemplo e atualize a amostra para dar suporte aos dois pontos de extremidade como emissores válidos.

Baixe 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 Web

Nesta seção, você atualizará o código para especificar que ambos os endereços do emissor de token são válidos.

  1. Abrir a solução B2C-WebAPI-DotNet.sln no Visual Studio

  2. No projeto TaskService , abra o arquivo TaskService\App_Start\Startup.Auth.cs em seu editor

  3. Adicione a seguinte using diretiva à parte superior do arquivo:

    using System.Collections.Generic;

  4. Adicione a ValidIssuers propriedade à TokenValidationParameters definição e especifique ambas as URIs que você registrou 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 por 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 do aplicativo OWIN é informado de que os dois pontos de extremidade do 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)))
});

Conforme mencionado anteriormente, outras bibliotecas OWIN normalmente fornecem um recurso semelhante para dar suporte a 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 pontos de extremidade no aplicativo Web

Agora com os dois URIs com suporte na API Web, você precisa atualizar o aplicativo Web para que ele recupere tokens do ponto de extremidade b2clogin.com.

Por exemplo, você pode configurar o aplicativo web de amostra para usar o novo endpoint modificando o valor ida:AadInstance no arquivo TaskWebApp\Web.config 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 do ponto de extremidade são construídas durante a execução do aplicativo Web, os pontos de extremidades baseados em b2clogin.com são usados ao solicitar tokens.

Ao usar o domínio personalizado:

<!-- Custom domain -->
<add key="ida:AadInstance" value="https://custom-domain/{0}/{1}" />

Próximas etapas

Este artigo apresentou um método de configuração de uma API Web implementando o middleware Microsoft OWIN (Katana) para aceitar tokens de vários endereços de emissores. Como você pode observar, há várias outras cadeias de caracteres nos arquivos Web.Config dos projetos TaskService e TaskWebApp que precisariam ser alterados se você quiser compilar e executar esses projetos em seu próprio locatário. Você será bem-vindo a modificar os projetos adequadamente se quiser vê-los em ação, no entanto, um passo a passo completo de fazer isso 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 dos tokens no Azure Active Directory B2C.