Partilhar via


Proteger uma API de Gerenciamento de API do Azure com o Azure AD B2C

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.

Saiba como restringir o acesso à sua API de Gerenciamento de API do Azure a clientes autenticados com o Azure Ative Directory B2C (Azure AD B2C). Siga as instruções neste artigo para criar e testar uma política de entrada no Gerenciamento de API do Azure que restringe o acesso apenas às solicitações que incluem um token de acesso emitido pelo Azure AD B2C válido.

Pré-requisitos

Antes de começar, certifique-se de que dispõe dos seguintes recursos:

Obter a ID do aplicativo Azure AD B2C

Ao proteger uma API no Gerenciamento de API do Azure com o Azure AD B2C, você precisa de vários valores para a política de entrada criada no Gerenciamento de API do Azure. Primeiro, anote a ID da aplicação de uma aplicação que criou anteriormente no seu locatário do Azure AD B2C. Caso estejas a utilizar a aplicação que criaste para satisfazer os pré-requisitos, usa o ID da aplicação para webapp1.

Para registrar um aplicativo em seu locatário do Azure AD B2C, você pode usar nossa nova experiência unificada de registros de aplicativos ou nossa experiência de aplicativos herdados. Saiba mais sobre a nova experiência de inscrições.

  1. Inicie sessão no portal Azure.
  2. Se tiver acesso a vários inquilinos, selecione o ícone Definições no menu superior para mudar para o inquilino do Azure AD B2C no menu Diretórios + subscrições.
  3. No painel esquerdo, selecione Azure AD B2C. Como alternativa, você pode selecionar Todos os serviços e, em seguida, pesquisar e selecionar Azure AD B2C.
  4. Selecione Registos de aplicações e, em seguida, selecione o separador Aplicações próprias .
  5. Registre o valor na coluna ID do aplicativo (cliente) para webapp1 ou para outro aplicativo que você criou anteriormente.

Obtenha um endpoint do emissor de token

Em seguida, obtenha a URL de configuração conhecida para um dos seus fluxos de usuário do Azure AD B2C. Você também precisa do URI do endpoint do emissor de token que deseja suportar no Gerenciamento de API do Azure.

  1. No portal do Azure, vá para seu locatário do Azure AD B2C.

  2. Em Políticas, selecione Fluxos de utilizadores.

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

  4. Registre a URL no hiperlink exibido sob o título Executar fluxo de usuário na parte superior da página. Essa URL é o ponto de extremidade de descoberta conhecido do OpenID Connect para o fluxo de usuários e você a usará na próxima seção quando configurar a política de entrada no Gerenciamento de API do Azure.

    Captura de ecrã da hiperligação de URI bem conhecida na página

  5. Selecione o hiperlink para ir para a página de configuração conhecida do OpenID Connect.

  6. Na página que se abre no navegador, anote o valor issuer. Por exemplo:

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

    Você usará esse valor na próxima seção, quando configurar sua API no Gerenciamento de API do Azure.

Agora você deve ter duas URLs gravadas para uso na próxima seção: a URL do ponto de extremidade de configuração conhecida do OpenID Connect e o URI do emissor. Por exemplo:

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/

Configurar a política de entrada no Gerenciamento de API do Azure

Agora você está pronto para adicionar a política de entrada no Gerenciamento de API do Azure que valida chamadas de API. Ao adicionar uma política de validação de token da Web JSON (JWT) que verifica o público e o emissor em um token de acesso, você pode garantir que apenas chamadas de API com um token válido sejam aceitas.

  1. No portal do Azure, vá para sua instância de Gerenciamento de API do Azure.

  2. Selecione APIs.

  3. Selecione a API que você deseja proteger com o Azure AD B2C.

  4. Selecione o separador Design.

  5. Em Processamento de entrada, selecione </> para abrir o editor de código de política.

  6. Coloque a seguinte etiqueta <validate-jwt> dentro da <inbound> política, e depois, faça o seguinte:

    a) Atualize o valor no elemento url com o URL <openid-config> da configuração bem conhecida da sua política.
    b) Atualize o <audience> elemento com a ID do aplicativo que você criou anteriormente em seu locatário B2C (por exemplo, webapp1).
    c. Atualize o <issuer> elemento com o ponto de extremidade do emissor de token que registou anteriormente.

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

Suporte a várias aplicações e emissores

Vários aplicativos normalmente interagem com uma única API REST. Para permitir que sua API aceite tokens destinados a vários aplicativos, adicione suas IDs de aplicativo ao <audiences> elemento na política de entrada do Gerenciamento de API do Azure.

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

Da mesma forma, para dar suporte a vários emissores de token, adicione os URIs de ponto de extremidade ao elemento <issuers> na política de entrada do Gerenciamento de API do Azure.

<!-- 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>

Migrar para o b2clogin.com

Se você tiver uma API ManagementM da API do Azure que valide tokens emitidos pelo ponto de extremidade herdado login.microsoftonline.com , deverá migrar a API e os aplicativos que a chamam para usar tokens emitidos por b2clogin.com.

Você pode seguir este processo geral para executar uma migração em estágios:

  1. Adicione suporte à sua política de entrada do Gerenciamento de API do Azure para tokens emitidos pelo b2clogin.com e pelo login.microsoftonline.com.
  2. Atualize as suas aplicações uma de cada vez para obter tokens do endpoint b2clogin.com.
  3. Depois que todos os seus aplicativos estiverem obtendo tokens corretamente do b2clogin.com, remova o suporte para tokens emitidos por login.microsoftonline.com da API.

O exemplo a seguir da política de entrada do Gerenciamento de API do Azure ilustra como aceitar tokens emitidos por b2clogin.com e login.microsoftonline.com. Além disso, a política suporta solicitações de API de dois aplicativos.

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

Próximos passos

Para obter informações adicionais sobre as políticas de Gerenciamento de API do Azure, consulte o índice de referência da política de Gerenciamento de API do Azure.

Para obter informações sobre como migrar APIs da Web baseadas em OWIN e seus aplicativos para b2clogin.com, consulte Migrar uma API da Web baseada em OWIN para b2clogin.com.