APIs seguras usadas para 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 seu ponto de extremidade da API REST com autenticação. A autenticação da API REST garante que apenas os serviços que têm credenciais adequadas, como o Azure AD B2C, possam fazer chamadas para o seu ponto de extremidade. Este artigo explora como proteger a API REST.

Pré-requisitos

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

Você pode proteger seu ponto de extremidade da 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 seu ponto de extremidade de API. Em seguida, o ponto de extremidade da API verifica as credenciais e executa decisões de autorização.

Autenticação básica HTTP

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

  • 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:passwordcodificada em base64.

  • Sua API é responsável por verificar esses valores para executar outras decisões de autorização.

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

  1. Inicie sessão no portal do Azure.
  2. Em Serviços do Azure, selecione Azure AD B2C ou procure 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 ponto de extremidade da API REST. Providing basic authentication configuration for an API connector.
  6. Selecione Guardar.

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. Inicie sessão 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 e, em seguida, procure e selecione Azure AD B2C.
  4. Na página Visão geral, selecione Identity Experience Framework.
  5. Selecione Chaves de política e, em seguida, selecione Adicionar.
  6. Em Opções, selecione Manual.
  7. Em Name, 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 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. Em Name, digite RestApiPassword. O prefixo B2C_1A_ pode ser adicionado automaticamente.
  15. Na caixa Segredo, digite a senha da API REST.
  16. Para Uso da chave, selecione Criptografia.
  17. Selecione Criar.

Configure 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. Procure o perfil técnico da API REST. Por exemplo REST-ValidateProfile, ou REST-GetProfile.
  3. Localize o <Metadata> elemento .
  4. Altere o AuthenticationType para Basic.
  5. Altere o AllowInsecureAuthInProduction para false.
  6. Imediatamente após o elemento de fechamento </Metadata> , adicione o seguinte trecho 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 de cliente HTTPS

A autenticação de certificado de cliente é uma autenticação baseada em certificado mútuo, 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 os certificados pertencentes 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

Em ambientes de produção, o certificado deve ser assinado por uma autoridade de certificação.

Criar um certificado

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

  • Assunto: CN=<yourapiname>.<tenantname>.onmicrosoft.com
  • Tipo de conteúdo: PKCS #12
  • Tipo de Acton vitalício: 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 poder exportar .pfx o arquivo)

Em seguida, você pode exportar o certificado.

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

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

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 -Subject argumento conforme apropriado para seu aplicativo e nome de locatário do Azure AD B2C, como contosowebapp.contoso.onmicrosoft.com. Você também pode ajustar a -NotAfter data 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 computador Windows, procure e selecione Gerenciar certificados de usuário

  3. Em Certificados - Usuário Atual, selecione Certificados Pessoais>>yourappname.yourtenant.onmicrosoft.com.

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

  5. Selecione Avançar>Sim, exportar a chave>privada Avançar.

  6. Aceite os padrões para Exportar Formato de Arquivo e selecione Avançar.

  7. Ative a opção Senha , digite uma senha para o certificado e selecione Avançar.

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

  9. Na janela Guardar Como, introduza um Nome de ficheiro e, em seguida, selecione Guardar.

  10. Selecione Seguinte>Concluir.

Para que o Azure AD B2C aceite a senha do arquivo .pfx, a senha deve ser criptografada com a opção TripleDES-SHA1 no utilitário Exportação do Windows Certificate Store, em oposição a AES256-SHA256.

Configurar o conector da API

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

  1. Inicie sessão 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 .pfx do certificado com uma chave privada.
  6. Na caixa Inserir Senha, digite a senha do certificado. Providing certificate authentication configuration for an API connector.
  7. Selecione Guardar.

Executar decisões de autorização

Sua API deve implementar a autorização com base nos certificados de cliente enviados para proteger os pontos de extremidade da API. Para o Serviço de Aplicativo do Azure e o Azure Functions, consulte Configurar a autenticação mútua TLS para saber como habilitar e validar o certificado do seu 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 do certificado do cliente em relação aos valores desejados.

Renovação de certificados

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

Para carregar um novo certificado para 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 passou, será usado automaticamente pelo Azure AD B2C.

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

Adicionar uma chave de política de certificado de cliente

  1. Inicie sessão 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 e, em seguida, procure e selecione Azure AD B2C.
  4. Na página Visão geral, selecione Identity Experience Framework.
  5. Selecione Chaves de política e, em seguida, selecione 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 de 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. Procure o perfil técnico da API REST. Por exemplo REST-ValidateProfile, ou REST-GetProfile.
  3. Localize o <Metadata> elemento .
  4. Altere o AuthenticationType para ClientCertificate.
  5. Altere o AllowInsecureAuthInProduction para false.
  6. Imediatamente após o elemento de fechamento </Metadata> , adicione o seguinte trecho 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 do portador OAuth2

A autenticação do token do portador é definida no 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 apólice 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 da API REST.

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

Uma declaração fornece armazenamento temporário de dados durante a execução de uma política do Azure AD B2C. O esquema de declarações é o local onde você declara suas reivindicaçõ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. Procure 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>

Adquirir um token de acesso

Você pode obter um token de acesso de várias maneiras, para o de um provedor de identidade federada, 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.

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 Microsoft Entra usando as credenciais do cliente passadas como autenticação básica HTTP. Para obter mais informações, consulte 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 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 gerenciado. Para registar uma candidatura:

  1. Inicie sessão 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 procure e selecione Microsoft Entra ID.
  4. Selecione Registos de aplicações e, em seguida, selecione Novo registo.
  5. Insira um Nome para o aplicativo. Por exemplo, Client_Credentials_Auth_app.
  6. Em Tipos de conta suportados, selecione Contas somente neste diretório organizacional.
  7. Selecione Registar.
  8. Registre o ID do aplicativo (cliente).

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

  1. Na página Microsoft Entra ID - Registos de aplicações, selecione a aplicação que criou, por exemplo Client_Credentials_Auth_app.
  2. No menu à esquerda, em Gerenciar, selecione Segredos de certificados&.
  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 Expira, selecione uma duração para a qual o segredo é válido e, em seguida, selecione Adicionar.
  6. Registre o valor do segredo para uso no código do aplicativo cliente. Este valor secreto nunca mais é apresentado depois de sair desta página. Você usa esse valor como o segredo do aplicativo no código do seu aplicativo.

Criar chaves de política do Azure AD B2C

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

  1. Inicie sessão 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 e, em seguida, procure e selecione Azure AD B2C.
  4. Na página Visão geral, selecione Identity Experience Framework.
  5. Selecione Chaves de política e, em seguida, selecione Adicionar.
  6. Em Opções, escolha Manual.
  7. Insira um Nome para a chave de política, SecureRESTClientId. O prefixo B2C_1A_ é adicionado automaticamente ao nome da sua chave.
  8. Em Secreto, insira o ID do cliente que você gravou anteriormente.
  9. Para Uso da chave, selecione Signature.
  10. Selecione Criar.
  11. Crie outra chave de política com as seguintes configurações:
    • Designação: SecureRESTClientSecret.
    • Segredo: insira o segredo do seu 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>

Nota

Se você usar as grant_type declarações ou scope em outros perfis técnicos, recomendamos que eles também especifiquem DefaultValue e usem AlwaysUseDefaultValue="true" para evitar possíveis conflitos na vinculaçã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ão TrustFrameworkExtensions.xml .

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

  3. Localize o <Metadata> elemento .

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

    <Item Key="AuthenticationType">Bearer</Item>
    
  5. Altere ou adicione o UseClaimAsBearerToken ao bearerToken, da seguinte forma. 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 perfil técnico, primeiro você precisa adquirir um token de acesso do Microsoft Entra usando o REST-GetProfileREST-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 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 do 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 ao portador.

  1. Inicie sessão 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 e, em seguida, procure e selecione Azure AD B2C.
  4. Na página Visão geral, selecione Identity Experience Framework.
  5. Selecione Chaves de política e, em seguida, selecione Adicionar.
  6. Em 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 sua chave.
  8. Em Segredo, insira o segredo do cliente que você gravou anteriormente.
  9. Para Uso da chave, selecione Encryption.
  10. Selecione Criar.

Configure seu perfil técnico da API REST para usar a chave de política do 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. Procure o perfil técnico da API REST. Por exemplo REST-ValidateProfile, ou REST-GetProfile.
  3. Localize o <Metadata> elemento .
  4. Altere o AuthenticationType para Bearer.
  5. Altere o AllowInsecureAuthInProduction para false.
  6. Imediatamente após o elemento de fechamento </Metadata> , adicione o seguinte trecho 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 de chave de API

Alguns serviços usam um mecanismo de "chave de API" para ofuscar o acesso aos seus pontos de extremidade HTTP durante o desenvolvimento, exigindo que o chamador inclua uma chave exclusiva como um cabeçalho HTTP ou parâmetro de consulta HTTP. Para o Azure Functions, você pode fazer isso incluindo o code parâmetro como uma consulta na URL do Ponto de Extremidade do seu 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 autenticação básica ou de certificado é sempre necessária. Se você não deseja implementar nenhum método de autenticação (não recomendado) para fins de desenvolvimento, você pode selecionar a autenticação 'básica' na configuração do conector da API e usar valores temporários para username e password que sua API pode desconsiderar enquanto 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 cabeçalho HTTP para identificar o x-functions-key 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. Inicie sessão 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 e, em seguida, procure e selecione Azure AD B2C.
  4. Na página Visão geral, selecione Identity Experience Framework.
  5. Selecione Chaves de política e, em seguida, selecione Adicionar.
  6. Em Opções, selecione Manual.
  7. Em Name, digite RestApiKey. O prefixo B2C_1A_ pode ser adicionado automaticamente.
  8. Na caixa Segredo, insira a chave da API REST.
  9. Para Uso da chave, selecione Criptografia.
  10. Selecione Criar.

Configure 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. Procure o perfil técnico da API REST. Por exemplo REST-ValidateProfile, ou REST-GetProfile.
  3. Localize o <Metadata> elemento .
  4. Altere o AuthenticationType para ApiKeyHeader.
  5. Altere o AllowInsecureAuthInProduction para false.
  6. Imediatamente após o elemento de fechamento </Metadata> , adicione o seguinte trecho 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 da API é enviada como x-functions-key.

O trecho 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óximos passos

  • Saiba mais sobre o elemento de perfil técnico Restful na referência de política personalizada.