Partilhar via


Migrar uma API da 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 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:

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:

  1. Navegue até o seu cliente 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 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.

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

  5. 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/

  6. 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.

  1. Navegue até a instância do Azure AD B2C
  2. Selecionar Estrutura de Experiência de Identidade
  3. Selecione uma de suas políticas de terceira parte confiável, por exemplo, B2C_1A_signup_signin
  4. Utilize 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. Registar o issuer valor
  7. 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.

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

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

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

    using System.Collections.Generic;

  4. Adicione a propriedade ValidIssuers à definição TokenValidationParameters 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.