APIs seguras usadas para os conectores de API no Azure AD B2C

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

Pré-requisitos

Conclua as etapas descritas na guia Adicionar um conector de API a um fluxo de usuário de entrada.

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 qualquer caso, você fornece as credenciais que o Azure AD B2C usa ao chamar o ponto de extremidade de 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 conforme segue:

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

  • 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 escolha o Conector de API que 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. Providing basic authentication configuration for an API connector.
  6. Selecione 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 de criptografia 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 o seu locatário do Azure Active Directory 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 de Visão Geral, selecione Estrutura de Experiência de Identidade.
  5. Selecione Chaves de Política e, em seguida, escolha Adicionar.
  6. Em Opções selecione Manual.
  7. Para Nome, digite RestApiUsername. O prefixo B2C_1A_ pode ser adicionado automaticamente.
  8. Na caixa Segredo, digite o nome de usuário da API REST.
  9. Para o Uso da chave, selecione Criptografia.
  10. Selecione Criar.
  11. Selecione Chaves de Política novamente.
  12. Selecione Adicionar.
  13. Em Opções selecione Manual.
  14. Para Nome, digite RestApiPassword. O prefixo B2C_1A_ pode ser adicionado automaticamente.
  15. Na caixa Segredo, digite a senha da API REST.
  16. Para o Uso da chave, selecione Criptografia.
  17. Selecione Criar.

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

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

  1. No seu 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. Adicione o seguinte snippet de código XML logo após fechar o elemento </Metadata>:
    <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" />
    </CryptographicKeys>
    

O snippet de código XML a seguir é um exemplo de um perfil técnico RESTful configurado com a 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 do cliente é uma autenticação mútua baseada em certificado, em que o cliente, Azure AD B2C, fornece o certificado do cliente para o servidor para comprovar sua identidade. Isso acontece como parte do handshake SSL. Sua API é responsável por validar os certificados pertencentes a um cliente válido, como 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 Avançar>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 depois 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. Providing certificate authentication configuration for an API connector.
  7. Selecione 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 o certificado expirar. Você precisará gerar um novo certificado e repetir as etapas acima quando os certificados usados estiverem prestes a vencer. 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 já passou da data de início, será automaticamente usado pelo Azure AD B2C.

Providing a new certificate to an API connector when one already exists.

Adicionar uma chave de política do certificado do 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 o seu locatário do Azure Active Directory 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 de Visão Geral, selecione Estrutura de Experiência de Identidade.
  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 Carregar arquivo, selecione o arquivo de certificado .pfx com uma chave privada.
  9. Na caixa Senha, digite a senha do certificado.
  10. Selecione Criar.

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

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

  1. No seu 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. Adicione o seguinte snippet de código XML logo após fechar o elemento </Metadata>:
    <CryptographicKeys>
       <Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
    </CryptographicKeys>
    

O snippet de código XML a seguir é um exemplo de um perfil técnico RESTful configurado com um certificado do 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 Estrutura de autorização OAuth 2.0: Uso do Token de Portador (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 de portador. Para enviar o token de portador no perfil técnico RESTful, a política precisa primeiro adquirir o token de portador e depois usá-lo no perfil técnico RESTful.
  • Token de portador estático. Use esta abordagem quando a 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 para a chave de política.

Uso de portador OAuth2

As etapas a seguir demonstram como usar as credenciais do cliente para obter um token de portador e passá-lo para o cabeçalho de autorização 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 lugar em que 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 sua 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 seguintes declarações 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>

Aquisição de um token de acesso

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

Como adquirir um token de acesso do Microsoft Entra

O exemplo a seguir usa um perfil técnico da API REST para fazer uma solicitação para o 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 o Microsoft Entra ID para obter um token de acesso, você precisa registrar um aplicativo. O Azure AD B2C conta com a plataforma do 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 o seu locatário do Azure Active Directory B2C no menu Diretórios + assinaturas.
  3. No menu à esquerda, selecione Microsoft Entra ID. Ou selecione Todos os serviços e pesquise e selecione Microsoft Entra ID.
  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 a ID do aplicativo (cliente) .

Para um fluxo de credenciais do cliente, é necessário criar um segredo de 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 Microsoft Entra ID – Registros de aplicativo, selecione o aplicativo criado, por exemplo Client_Credentials_Auth_app.
  2. No menu à esquerda, em Gerenciar, selecione Certificados & 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 chave de política do Azure AD B2C

É preciso armazenar o valor do segredo e a ID do cliente que você registrou anteriormente no 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 o seu locatário do Azure Active Directory 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 de Visão Geral, selecione Estrutura de Experiência de Identidade.
  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, SecureRESTClientId. O prefixo B2C_1A_ será adicionado automaticamente ao nome da chave.
  8. Em Segredo, insira a ID do 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ê registrou anteriormente

Para o ServiceUrl, substitua your-tenant-name pelo nome do locatário do Microsoft Entra. Confira a referência de 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 declarações grant_typeou scope em outros perfis técnicos, recomendamos que elas também especifiquem DefaultValue e usem AlwaysUseDefaultValue="true" para evitar possíveis conflitos na ligação com o valor incorreto.

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

Para dar suporte à autenticação do token de portador na política personalizada, modifique o perfil técnico da API REST com o seguinte:

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

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

  3. Localize o elemento <Metadata>.

  4. Altere o AuthenticationType para Portador da seguinte maneira:

    <Item Key="AuthenticationType">Bearer</Item>
    
  5. Altere ou adicione o UseClaimAsBearerToken para bearerToken, conforme segue. bearerToken é o nome da declaração em que o token de portador será 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 deverá 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 de REST

Para chamar o perfil técnico REST-GetProfile, você precisa primeiro adquirir um token de acesso do Microsoft Entra usando o perfil técnico REST-AcquireAccessToken. O exemplo a seguir mostra como chamar o perfil técnico REST-GetProfile 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 perfil técnico REST-GetProfile de um percurso do usuário ou de um sub percurso:

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

Uso de um portador estático OAuth2

Adicione a chave de política de token do 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 de criptografia 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 o seu locatário do Azure Active Directory 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 de Visão Geral, selecione Estrutura de Experiência de Identidade.
  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_ será adicionado automaticamente ao nome da chave.
  8. Em Segredo, insira o segredo do cliente que você registrou anteriormente.
  9. Para Uso de chave, selecione Encryption.
  10. Selecione Criar.

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

Depois de criar as chaves necessárias, configure os metadados de perfil técnico da API REST para fazer referência ao token de portador.

  1. No seu 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. Adicione o seguinte snippet de código XML logo após fechar o elemento </Metadata>:
    <CryptographicKeys>
       <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" />
    </CryptographicKeys>
    

O snippet de código XML a seguir é um exemplo de um perfil técnico RESTful configurado com a 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 de perfil técnico de validação ao perfil técnico de inscrição, que chama REST-AcquireAccessToken. Esse comportamento significa que o Azure AD B2C se move para 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.

Esse não é um mecanismo que deve 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, escolha a autenticação "básica" na configuração do conector de API e use valores temporários para username e password que a API possa ignorar 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 de API REST. A chave é enviada em um cabeçalho HTTP personalizado. Por exemplo, o gatilho HTTP Azure Functions usa o cabeçalho HTTP x-functions-key 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 as seguintes chaves de criptografia 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 o seu locatário do Azure Active Directory 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 de Visão Geral, selecione Estrutura de Experiência de Identidade.
  5. Selecione Chaves de Política e, em seguida, escolha Adicionar.
  6. Em Opções selecione Manual.
  7. Para Nome, digite RestApiKey. O prefixo B2C_1A_ pode ser adicionado automaticamente.
  8. Na caixa Segredo, digite a senha da chave de API REST.
  9. Para o Uso da chave, selecione Criptografia.
  10. Selecione Criar.

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

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

  1. No seu 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. Adicione o seguinte snippet de código XML logo após fechar o elemento </Metadata>:
    <CryptographicKeys>
        <Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
    </CryptographicKeys>
    

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

O snippet de código 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>

Próximas etapas