Compartilhar via


APIs seguras usadas para conectores de API no 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 em nossas perguntas frequentes.

Ao integrar uma API REST em um fluxo de usuário do Azure AD B2C, você deve proteger seu ponto de extremidade da API REST com autenticação. A autenticação da API REST garante que somente os serviços que têm credenciais adequadas, como o Azure AD B2C, possam fazer chamadas para o ponto de extremidade. Este artigo vai explorar como proteger a API REST.

Pré-requisitos

Conclua as etapas no guia Adicionar um conector de API a um fluxo de usuário de inscrição .

Você pode proteger o ponto de extremidade de API usando a autenticação básica HTTP ou a autenticação de certificado de cliente HTTPS. Em ambos os casos, você fornece as credenciais que o Azure AD B2C usa quando chama o ponto de extremidade da API. O ponto de extremidade de API verifica as credenciais e executa decisões de autorização.

Autenticação básica HTTP

A autenticação básica HTTP é definida em RFC 2617. A autenticação básica funciona da seguinte maneira:

  • O Azure AD B2C envia uma solicitação HTTP com as credenciais do cliente (username e password) no Authorization cabeçalho.

  • As credenciais são formatadas como a cadeia de caracteres username:password codificada em base64.

  • Em seguida, sua API é responsável por verificar esses valores para tomar outras decisões de autorização.

Para configurar um conector de API com autenticação básica HTTP, siga estas etapas:

  1. Entre no portal do Azure.
  2. Em Serviços do Azure, selecione Azure AD B2C ou pesquise e selecione Azure AD B2C.
  3. Selecione Conectores de API e, em seguida, selecione o Conector de API que você deseja configurar.
  4. Para o Tipo de autenticação, selecione Básico.
  5. Forneça o nome de usuário e a senha do seu ponto de extremidade da API REST. Fornecer configuração básica de autenticação para um conector de API.
  6. Clique em Salvar.

Adicionar chaves de política de nome de usuário e senha da API REST

Para configurar um perfil técnico da API REST com autenticação básica HTTP, crie as seguintes chaves criptográficas para armazenar o nome de usuário e a senha:

  1. Entre no portal do Azure.
  2. Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para seu locatário do Azure AD B2C no menu Diretórios + assinaturas.
  3. Escolha Todos os serviços no canto superior esquerdo do Portal do Azure, pesquise Azure AD B2C e selecione-o.
  4. Na página Visão geral, selecione Identity Experience Framework.
  5. Selecione Chaves de Política e, em seguida, escolha Adicionar.
  6. Para Opções, selecione Manual.
  7. Em Name (Nome), digite RestApiUsername. O prefixo B2C_1A_ pode ser adicionado automaticamente.
  8. Na caixa Segredo , insira o nome de usuário da API REST.
  9. Para uso de chave, selecione Criptografia.
  10. Selecione Criar.
  11. Selecione Chaves de política novamente.
  12. Selecione Adicionar.
  13. Para Opções, selecione Manual.
  14. Em Nome, digite RestApiPassword. O prefixo B2C_1A_ pode ser adicionado automaticamente.
  15. Na caixa Segredo , insira a senha da API REST.
  16. Para uso de chave, selecione Criptografia.
  17. Selecione Criar.

Configurar seu perfil técnico da API REST para usar a autenticação básica HTTP

Depois de criar as chaves necessárias, configure os metadados do perfil técnico da API REST para fazer referência às credenciais.

  1. No diretório de trabalho, abra o arquivo de política de extensão (TrustFrameworkExtensions.xml).
  2. Pesquise o perfil técnico da API REST. Por exemplo REST-ValidateProfile, ou REST-GetProfile.
  3. Localize o elemento <Metadata>.
  4. Altere o AuthenticationType para Basic.
  5. Altere o AllowInsecureAuthInProduction para false.
  6. Imediatamente após o elemento de fechamento </Metadata> , adicione o seguinte snippet XML:
    <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" />
    </CryptographicKeys>
    

O trecho XML a seguir é um exemplo de um perfil técnico RESTful configurado com autenticação básica HTTP:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Basic</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Autenticação de certificado do cliente HTTPS

A autenticação de certificado de cliente é uma autenticação mútua baseada em certificado, em que o cliente, Azure AD B2C, fornece seu certificado de cliente ao servidor para provar sua identidade. Isso acontece como parte do handshake SSL. Sua API é responsável por validar se os certificados pertencem a um cliente válido, como o Azure AD B2C, e executar decisões de autorização. O certificado do cliente é um certificado digital X.509.

Importante

Nos ambientes de produção, o certificado precisa ser assinado por uma autoridade de certificação.

Criar um certificado

Para criar um certificado, você pode usar o Azure Key Vault, que tem opções para certificados autoassinados e integrações com provedores de emissor do certificado para certificados assinados. As configurações recomendadas incluem:

  • Entidade: CN=<yourapiname>.<tenantname>.onmicrosoft.com
  • Tipo de conteúdo: PKCS #12
  • Tipo de ação de tempo de vida: Email all contacts at a given percentage lifetime ou Email all contacts a given number of days before expiry
  • Tipo de chave: RSA
  • Tamanho da chave: 2048
  • Chave Privada Exportável: Yes (para exportar o arquivo .pfx)

Depois, você pode exportar o certificado.

Opção 2: preparar um certificado autoassinado usando o módulo do PowerShell

Se você ainda não tiver um certificado, será possível usar um certificado autoassinado. Um certificado autoassinado é um certificado de segurança que não é assinado por uma autoridade de certificação (AC) e não fornece as garantias de segurança de um certificado assinado por uma AC.

No Windows, use o cmdlet New-SelfSignedCertificate no PowerShell para gerar um certificado.

  1. Execute o seguinte comando do PowerShell para gerar um certificado autoassinado. Modifique o argumento -Subject conforme apropriado para o aplicativo e o nome do locatário do Azure AD B2C, como contosowebapp.contoso.onmicrosoft.com. Você também pode ajustar a data -NotAfter para especificar uma expiração diferente para o certificado.

    New-SelfSignedCertificate `
        -KeyExportPolicy Exportable `
        -Subject "CN=yourappname.yourtenant.onmicrosoft.com" `
        -KeyAlgorithm RSA `
        -KeyLength 2048 `
        -KeyUsage DigitalSignature `
        -NotAfter (Get-Date).AddMonths(12) `
        -CertStoreLocation "Cert:\CurrentUser\My"
    
  2. No Windows, pesquise e selecione Gerenciar certificados de usuário

  3. Em Certificados – Usuário Atual, selecione Pessoal>Certificados>yourappname.yourtenant.onmicrosoft.com.

  4. Selecione o certificado e, em seguida, selecione Ação>Todas as Tarefas>Exportar.

  5. Selecione Próximo>Sim, exportar a chave privada>Próximo.

  6. Aceite os padrões para Formato de arquivo para exportação e selecione Próximo.

  7. Habilite a opção Senha, insira uma senha para o certificado e selecione Próximo.

  8. Para especificar um local para salvar seu certificado, selecione Procurar e navegue até um diretório de sua preferência.

  9. Na janela Salvar como, insira um Nome de arquivo e, em seguida, selecione Salvar.

  10. Selecione Próximo>Concluir.

Para o Azure AD B2C aceitar a senha do arquivo .pfx, a senha deve estar criptografada com a opção TripleDES-SHA1 no utilitário de exportação do repositório de certificados do Windows, em oposição ao AES256-SHA256.

Configurar seu Conector de API

Para configurar um conector de API com autenticação do certificado do cliente, siga estas etapas:

  1. Entre no portal do Azure.
  2. Em Serviços do Azure, selecione Azure AD B2C.
  3. Selecione Conectores de API e, em seguida, selecione o Conector de API que você deseja configurar.
  4. Para o Tipo de autenticação, selecione Certificado.
  5. Na caixa Carregar certificado, selecione o arquivo de certificado .pfx com uma chave privada.
  6. Na caixa Inserir Senha, digite a senha do certificado. Fornecer configuração de autenticação de certificado para um conector de API.
  7. Clique em Salvar.

Tomar decisões de autorização

A API deve implementar a autorização com base em certificados de cliente enviados para proteger os pontos de extremidade de API. Para o Serviço de Aplicativo do Azure e o Azure Functions, confira Configurar a autenticação mútua TLS para saber como habilitar e validar o certificado do código de API. Como alternativa, você pode usar o Gerenciamento de API do Azure como uma camada na frente de qualquer serviço de API para verificar as propriedades de certificado do cliente em relação aos valores desejados.

Como renovar certificados

É recomendável definir alertas de lembrete para quando seu certificado expirar. Você precisa gerar um novo certificado e repetir as etapas acima quando os certificados usados estiverem prestes a expirar. Para "distribuir" o uso de um novo certificado, o serviço de API pode continuar aceitando certificados novos e antigos por um período temporário enquanto o novo certificado é implantado.

Para carregar um novo certificado em um conector de API existente, selecione o conector de API em Conectores de API e clique em Carregar novo certificado. O certificado carregado mais recentemente, que não expirou e cuja data de início já passou, será usado automaticamente pelo Azure AD B2C.

Fornecer um novo certificado para um conector de API quando já existe um.

Adicionar uma chave de política de certificado de cliente

  1. Entre no portal do Azure.
  2. Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para seu locatário do Azure AD B2C no menu Diretórios + assinaturas.
  3. Escolha Todos os serviços no canto superior esquerdo do Portal do Azure, pesquise Azure AD B2C e selecione-o.
  4. Na página Visão geral, selecione Identity Experience Framework.
  5. Selecione Chaves de Política e, em seguida, escolha Adicionar.
  6. Na caixa Opções , selecione Carregar.
  7. Na caixa Nome , digite RestApiClientCertificate. O prefixo B2C_1A_ é adicionado automaticamente.
  8. Na caixa Carregamento de arquivo , selecione o arquivo .pfx do certificado com uma chave privada.
  9. Na caixa Senha , digite a senha do certificado.
  10. Selecione Criar.

Configurar seu perfil técnico da API REST para usar a autenticação de certificado do cliente

Depois de criar a chave necessária, configure os metadados do perfil técnico da API REST para fazer referência ao certificado do cliente.

  1. No diretório de trabalho, abra o arquivo de política de extensão (TrustFrameworkExtensions.xml).
  2. Pesquise o perfil técnico da API REST. Por exemplo REST-ValidateProfile, ou REST-GetProfile.
  3. Localize o elemento <Metadata>.
  4. Altere o AuthenticationType para ClientCertificate.
  5. Altere o AllowInsecureAuthInProduction para false.
  6. Imediatamente após o elemento de fechamento </Metadata> , adicione o seguinte snippet XML:
    <CryptographicKeys>
       <Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
    </CryptographicKeys>
    

O trecho XML a seguir é um exemplo de um perfil técnico RESTful configurado com um certificado de cliente HTTP:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">ClientCertificate</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Autenticação de portador OAuth2

A autenticação de token de portador é definida em OAuth2.0 Authorization Framework: Bearer Token Usage (RFC 6750). Na autenticação de token de portador, o Azure AD B2C envia uma solicitação HTTP com um token no cabeçalho de autorização.

Authorization: Bearer <token>

Um token de portador é uma cadeia de caracteres opaca. Pode ser um token de acesso JWT ou qualquer cadeia de caracteres que a API REST espera que o Azure AD B2C envie no cabeçalho de autorização. O Azure AD B2C dá suporte aos seguintes tipos:

  • Token ao portador. Para poder enviar o token de portador no perfil técnico RESTful, sua política precisa primeiro adquirir o token de portador e, em seguida, usá-lo no perfil técnico RESTful.
  • Token de portador estático. Use essa abordagem quando sua API REST emitir um token de acesso de longo prazo. Para usar um token de portador estático, crie uma chave de política e faça uma referência do perfil técnico RESTful à sua chave de política.

Usando o portador OAuth2

As etapas a seguir demonstram como usar credenciais de cliente para obter um token de portador e passá-lo para o cabeçalho Authorization das chamadas à API REST.

Definir uma declaração para armazenar o token de portador

Uma declaração fornece armazenamento temporário de dados durante uma execução de política do Azure AD B2C. O esquema de declarações é o local onde você declara suas declarações. O token de acesso deve ser armazenado em uma declaração para ser usado posteriormente.

  1. Abra o arquivo de extensões da política. Por exemplo, SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Pesquise o elemento BuildingBlocks . Se o elemento não existir, adicione-o.
  3. Localize o elemento ClaimsSchema . Se o elemento não existir, adicione-o.
  4. Adicione as declarações a seguir ao elemento ClaimsSchema .
<ClaimType Id="bearerToken">
  <DisplayName>Bearer token</DisplayName>
  <DataType>string</DataType>
</ClaimType>
<ClaimType Id="grant_type">
  <DisplayName>Grant type</DisplayName>
  <DataType>string</DataType>
</ClaimType>
<ClaimType Id="scope">
  <DisplayName>scope</DisplayName>
  <DataType>string</DataType>
</ClaimType>

Adquirindo um token de acesso

Você pode obter um token de acesso de várias maneiras, para um provedor de identidade federado, chamando uma API REST que retorna um token de acesso, usando um fluxo ROPC ou usando o fluxo de credenciais do cliente. O fluxo de credenciais do cliente é comumente usado para interações de servidor para servidor que devem ser executadas em segundo plano, sem interação imediata com um usuário.

Aviso

A Microsoft recomenda que você não use o fluxo ROPC. Esse fluxo exige um grau muito alto de confiança no aplicativo e traz riscos que não estão presentes em outros fluxos. Use-o somente quando outros fluxos mais seguros não forem viáveis.

Adquirindo um token de acesso do Microsoft Entra

O exemplo a seguir usa um perfil técnico da API REST para fazer uma solicitação ao ponto de extremidade do token do Microsoft Entra usando as credenciais do cliente passadas como autenticação básica HTTP. Para saber mais, confira a plataforma de identidade da Microsoft e o fluxo de credenciais do cliente OAuth 2.0.

Antes que o perfil técnico possa interagir com a ID do Microsoft Entra para obter um token de acesso, você precisa registrar um aplicativo. O Azure AD B2C depende da plataforma Microsoft Entra. Você pode criar o aplicativo em seu locatário do Azure AD B2C ou em qualquer locatário do Microsoft Entra que você gerencia. Para registrar um aplicativo:

  1. Entre no portal do Azure.
  2. Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para seu locatário do Azure AD B2C no menu Diretórios + assinaturas.
  3. No menu à esquerda, selecione Microsoft Entra ID. Ou selecione Todos os serviços e pesquise e selecione a ID do Microsoft Entra.
  4. Escolha Registros de aplicativo e Novo registro.
  5. Insira um nome para o aplicativo. Por exemplo, Client_Credentials_Auth_app.
  6. Em Tipos de contas com suporte, selecione Contas somente neste diretório organizacional.
  7. Selecione Registrar.
  8. Registre o ID do aplicativo (cliente).

Para um fluxo de credenciais do cliente, você precisa criar um segredo do aplicativo. O segredo do cliente também é conhecido como senha do aplicativo. Seu aplicativo usa o segredo para adquirir um token de acesso.

  1. Na página ID do Microsoft Entra - Registros de aplicativo , selecione o aplicativo que você criou, por exemplo, Client_Credentials_Auth_app.
  2. No menu à esquerda, em Gerenciar, selecione Certificados e segredos.
  3. Selecione Novo segredo do cliente.
  4. Insira uma descrição para o segredo do cliente na caixa Descrição. Por exemplo, clientsecret1.
  5. Em Expirar, selecione um período durante o qual o segredo será válido e clique em Adicionar.
  6. Registre o Valor do segredo para uso no código do aplicativo cliente. Esse valor secreto nunca será exibido novamente depois que você sair dessa página. Use este valor como o segredo do aplicativo no código do aplicativo.

Criar chaves de política do Azure AD B2C

Você precisa armazenar a ID do cliente e o valor do segredo do cliente que você registrou anteriormente em seu locatário do Azure AD B2C.

  1. Entre no portal do Azure.
  2. Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para seu locatário do Azure AD B2C no menu Diretórios + assinaturas.
  3. Escolha Todos os serviços no canto superior esquerdo do Portal do Azure, pesquise Azure AD B2C e selecione-o.
  4. Na página Visão geral, selecione Identity Experience Framework.
  5. Selecione Chaves de Política e, em seguida, selecione Adicionar.
  6. Para Opções, escolha Manual.
  7. Insira um Nome para a chave de política, SecureRESTClientId. O prefixo B2C_1A_ é adicionado automaticamente ao nome da chave.
  8. Em Segredo, insira sua ID de cliente que você registrou anteriormente.
  9. Para uso de chave, selecione Signature.
  10. Selecione Criar.
  11. Crie outra chave de política com as seguintes configurações:
    • Nome: SecureRESTClientSecret.
    • Segredo: insira o segredo do cliente que você gravou anteriormente

Para o ServiceUrl, substitua your-tenant-name pelo nome do seu locatário do Microsoft Entra. Consulte a referência do perfil técnico RESTful para todas as opções disponíveis.

<TechnicalProfile Id="REST-AcquireAccessToken">
  <DisplayName></DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="ServiceUrl">https://login.microsoftonline.com/your-tenant-name.onmicrosoft.com/oauth2/v2.0/token</Item>
    <Item Key="AuthenticationType">Basic</Item>
     <Item Key="SendClaimsIn">Form</Item>
  </Metadata>
  <CryptographicKeys>
    <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_SecureRESTClientId" />
    <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_SecureRESTClientSecret" />
  </CryptographicKeys>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="grant_type" DefaultValue="client_credentials" AlwaysUseDefaultValue="true" />
    <InputClaim ClaimTypeReferenceId="scope" DefaultValue="https://graph.microsoft.com/.default" AlwaysUseDefaultValue="true" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="bearerToken" PartnerClaimType="access_token" />
  </OutputClaims>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

Observação

Se você usar as grant_type declarações or scope em outros perfis técnicos, recomendamos que elas também especifiquem DefaultValue e usem AlwaysUseDefaultValue="true" para evitar possíveis conflitos na associação com o valor incorreto.

Alterar o perfil técnico REST para usar a autenticação de token de portador

Para dar suporte à autenticação de token de portador em sua política personalizada, modifique o perfil técnico da API REST usando as seguintes etapas:

  1. No diretório de trabalho, abra o arquivo de política de extensãoTrustFrameworkExtensions.xml .

  2. Procure o <TechnicalProfile> nó que inclui Id="REST-API-SignUp".

  3. Localize o elemento <Metadata>.

  4. Altere o AuthenticationType para Bearer, da seguinte maneira:

    <Item Key="AuthenticationType">Bearer</Item>
    
  5. Altere ou adicione o UseClaimAsBearerToken a bearerToken, da seguinte maneira. O bearerToken é o nome da declaração da qual o token de portador é recuperado (a declaração de saída de REST-AcquireAccessToken).

    <Item Key="UseClaimAsBearerToken">bearerToken</Item>
    
  6. Adicione a declaração da etapa anterior como uma declaração de entrada:

    <InputClaim ClaimTypeReferenceId="bearerToken"/>
    

Depois de atualizar sua política, seu perfil técnico deve ser semelhante ao seguinte código XML:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Bearer</Item>
        <Item Key="UseClaimAsBearerToken">bearerToken</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="bearerToken"/>
      </InputClaims>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Chamar o perfil técnico REST

Para chamar o REST-GetProfile perfil técnico, primeiro você precisa adquirir um token de acesso do Microsoft Entra usando o REST-AcquireAccessToken perfil técnico. O exemplo a seguir mostra como chamar o REST-GetProfile perfil técnico de um perfil técnico de validação:

<ValidationTechnicalProfiles>
  <ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
  <ValidationTechnicalProfile ReferenceId="REST-GetProfile" />
</ValidationTechnicalProfiles>

O exemplo a seguir mostra como chamar o REST-GetProfile perfil técnico de uma jornada do usuário ou de uma subjornada:

<OrchestrationSteps>
  <OrchestrationStep Order="2" Type="ClaimsExchange">
    <ClaimsExchanges>
      <ClaimsExchange Id="REST-AcquireAccessTokens" TechnicalProfileReferenceId="REST-AcquireAccessToken" />
    </ClaimsExchanges>
  </OrchestrationStep>

  <OrchestrationStep Order="3" Type="ClaimsExchange">
    <ClaimsExchanges>
      <ClaimsExchange Id="REST-GetProfile" TechnicalProfileReferenceId="REST-GetProfile" />
    </ClaimsExchanges>
  </OrchestrationStep>
</OrchestrationSteps>

Usando um portador OAuth2 estático

Adicionar a chave de política de token de portador OAuth2

Para configurar um perfil técnico da API REST com um token de portador OAuth2, obtenha um token de acesso do proprietário da API REST. Em seguida, crie a seguinte chave criptográfica para armazenar o token de portador.

  1. Entre no portal do Azure.
  2. Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para seu locatário do Azure AD B2C no menu Diretórios + assinaturas.
  3. Escolha Todos os serviços no canto superior esquerdo do Portal do Azure, pesquise Azure AD B2C e selecione-o.
  4. Na página Visão geral, selecione Identity Experience Framework.
  5. Selecione Chaves de Política e, em seguida, escolha Adicionar.
  6. Para Opções, escolha Manual.
  7. Insira um Nome para a chave de política. Por exemplo, RestApiBearerToken. O prefixo B2C_1A_ é adicionado automaticamente ao nome da chave.
  8. Em Segredo, insira o segredo do cliente que você gravou anteriormente.
  9. Para uso de chave, selecione Encryption.
  10. Selecione Criar.

Configurar seu perfil técnico da API REST para usar a chave de política de token de portador

Depois de criar a chave necessária, configure os metadados do perfil técnico da API REST para fazer referência ao token de portador.

  1. No diretório de trabalho, abra o arquivo de política de extensão (TrustFrameworkExtensions.xml).
  2. Pesquise o perfil técnico da API REST. Por exemplo REST-ValidateProfile, ou REST-GetProfile.
  3. Localize o elemento <Metadata>.
  4. Altere o AuthenticationType para Bearer.
  5. Altere o AllowInsecureAuthInProduction para false.
  6. Imediatamente após o elemento de fechamento </Metadata> , adicione o seguinte snippet XML:
    <CryptographicKeys>
       <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" />
    </CryptographicKeys>
    

O trecho XML a seguir é um exemplo de um perfil técnico RESTful configurado com autenticação de token de portador:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Bearer</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Adicione a referência do perfil técnico de validação ao perfil técnico de inscrição, que chama o REST-AcquireAccessToken. Esse comportamento significa que o Azure AD B2C passa a criar a conta no diretório somente após a validação bem-sucedida.

Por exemplo:

```XML
<ValidationTechnicalProfiles>
   ....
   <ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
   ....
</ValidationTechnicalProfiles>

Autenticação da chave de API

Alguns serviços usam um mecanismo de "chave de API" para ocultar o acesso aos pontos de extremidade HTTP durante o desenvolvimento, exigindo que o chamador inclua uma chave exclusiva como um cabeçalho HTTP ou um parâmetro de consulta HTTP. Para o Azure Functions, faça isso incluindo o code como um parâmetro de consulta na URL do Ponto de Extremidade do conector de API. Por exemplo, https://contoso.azurewebsites.net/api/endpoint?code=0123456789.

Este não é um mecanismo que deva ser usado sozinho na produção. Portanto, a configuração para a autenticação básica ou de certificado é sempre necessária. Se você não quiser implementar nenhum método de autenticação (não recomendado) para fins de desenvolvimento, poderá selecionar a autenticação "básica" na configuração do conector de API e usar valores temporários para username e password que sua API possa desconsiderar enquanto você implementa a autorização adequada.

A chave de API é um identificador exclusivo usado para autenticar um usuário para acessar um ponto de extremidade da API REST. A chave é enviada em um cabeçalho HTTP personalizado. Por exemplo, o gatilho HTTP do Azure Functions usa o x-functions-key cabeçalho HTTP para identificar o solicitante.

Adicionar chaves de política de chave de API

Para configurar um perfil técnico da API REST com autenticação de chave de API, crie a seguinte chave criptográfica para armazenar a chave de API:

  1. Entre no portal do Azure.
  2. Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para seu locatário do Azure AD B2C no menu Diretórios + assinaturas.
  3. Escolha Todos os serviços no canto superior esquerdo do Portal do Azure, pesquise Azure AD B2C e selecione-o.
  4. Na página Visão geral, selecione Identity Experience Framework.
  5. Selecione Chaves de Política e, em seguida, escolha Adicionar.
  6. Para Opções, selecione Manual.
  7. Em Nome, digite RestApiKey. O prefixo B2C_1A_ pode ser adicionado automaticamente.
  8. Na caixa Segredo , insira a chave da API REST.
  9. Para uso de chave, selecione Criptografia.
  10. Selecione Criar.

Configurar seu perfil técnico da API REST para usar a autenticação de chave de API

Depois de criar a chave necessária, configure os metadados do perfil técnico da API REST para fazer referência às credenciais.

  1. No diretório de trabalho, abra o arquivo de política de extensão (TrustFrameworkExtensions.xml).
  2. Pesquise o perfil técnico da API REST. Por exemplo REST-ValidateProfile, ou REST-GetProfile.
  3. Localize o elemento <Metadata>.
  4. Altere o AuthenticationType para ApiKeyHeader.
  5. Altere o AllowInsecureAuthInProduction para false.
  6. Imediatamente após o elemento de fechamento </Metadata> , adicione o seguinte snippet XML:
    <CryptographicKeys>
        <Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
    </CryptographicKeys>
    

O ID da chave criptográfica define o cabeçalho HTTP. Neste exemplo, a chave de API é enviada como x-functions-key.

O snippet XML a seguir é um exemplo de um perfil técnico RESTful configurado para chamar uma Função do Azure com autenticação de chave de API:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">ApiKeyHeader</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>