Compartilhar via


Autenticação

Ao fazer chamadas REST, várias etapas são necessárias para autenticar corretamente. Os SDKs dos Serviços de Comunicação do Azure lidam com esse processo para você, mas fazer solicitações manualmente significa que você precisará lidar com isso por conta própria.

Tipos de autenticação

Os Serviços de Comunicação do Azure têm três tipos de Autenticação, eles são usados para diferentes finalidades:

  • de autenticação de chave de acesso para sms, passagem de rede, automação de chamadas, identidade e operações de token de acesso. A autenticação da Chave de Acesso é adequada para aplicativos em execução em um ambiente de serviço confiável.
  • autenticação rbac do Azure para controlar o acesso aos recursos aproveitando o RBAC do Azure atribuindo funções do Azure.
  • de autenticação de token de acesso do usuário para chat e chamada. Os tokens de acesso do usuário permitem que seus aplicativos cliente se autentiquem diretamente nos Serviços de Comunicação do Azure. Esses tokens são gerados em um serviço de provisionamento de token do lado do servidor que você cria. Em seguida, eles são fornecidos para dispositivos cliente que usam o token para inicializar as bibliotecas de cliente de Chat e Chamada.

Autenticação de chave de acesso

A autenticação da Chave de Acesso é usada quando as solicitações não são feitas pelo aplicativo do usuário final. Execute essas solicitações em um ambiente de serviço confiável.

Neste método de autenticação, as solicitações são assinadas usando umHMAC (código de autenticação de mensagem baseado em hash) gerado pelo cliente.

Antes de começar, verifique se você tem:

  • Sua chave de acesso dos Serviços de Comunicação do Azure
  • Seu ponto de extremidade do Serviço de Comunicação do Azure
  • O caminho da URL e o verbo HTTP que você está chamando
  • Um ambiente de desenvolvimento, que pode gerar HMACs, hashes SHA256 e executar operações base64.

Depois de ter esses itens, você poderá continuar assinando sua solicitação.

Assinando uma solicitação HTTP

  1. Verifique se você tem os seguintes valores disponíveis:

    • Método de solicitação HTTP (por exemplo, GET ou PUT)
    • Carimbo de data/hora UTC (Tempo Universal Coordenado) para a solicitação de acordo com o padrão RFC1123
    • Host de solicitação HTTP (o componente URI do <authority> conforme especificado em RFC2396)
    • Hash do corpo da solicitação HTTP usando o algoritmo SHA256
    • Caminho de solicitação HTTP (o <path> e <query> concatenados por componentes ? conforme especificado em RFC2396)
    Verb=<http_method>
    Timestamp=<current_datetime>
    Host=<uri_authority>
    ContentHash=SHA256(<request_body>)
    URIPathAndQuery=<uri_path>?<uri_query>
    
  2. Construa a cadeia de caracteres a ser assinada concatenando os valores da seguinte maneira:

    StringToSign=Verb + "\n"
    URIPathAndQuery + "\n"
    Timestamp + ";" + Host + ";" + ContentHash
    
  3. Gere uma assinatura HMAC-256 da cadeia de caracteres codificada UTF-8 que você criou na etapa anterior. Em seguida, codifique seus resultados como Base64. Você também precisa decodificar a chave de acesso da Base64. Use o seguinte formato (mostrado como pseudocódigo):

    Signature=Base64(HMAC-SHA256(UTF8(StringToSign), Base64.decode(<your_access_key>)))
    
  4. Adicione os seguintes cabeçalhos à solicitação:

    x-ms-date: <Timestamp>
    x-ms-content-sha256: <ContentHash>
    host: <URIPathAndQuery>   
    Authorization: "HMAC-SHA256 SignedHeaders=x-ms-date;host;x-ms-content-sha256&Signature=<Signature>"
    

Ao receber a solicitação, o serviço valida a assinatura e o carimbo de data/hora para se proteger contra determinados ataques de segurança, incluindo ataques de repetição. Para saber como assinar a solicitação HTTP em várias linguagens de programação, visite o tutorial de assinatura de cabeçalho do HMAC.

Autenticação RBAC do Azure

A plataforma do Azure fornece acesso baseado em função (RBAC do Azure) para controlar o acesso aos recursos. A entidade de segurança RBAC do Azure representa um usuário, grupo, entidade de serviço ou identidade gerenciada que está solicitando acesso aos recursos do Azure.

A autenticação do Microsoft Entra fornece segurança superior e facilidade de uso em relação a outras opções de autorização. Por exemplo, usando a identidade gerenciada, você evita ter que armazenar sua chave de acesso de conta no código, como faz com a autenticação da Chave de Acesso. Embora você possa continuar a usar a autenticação da Chave de Acesso com aplicativos de serviços de comunicação, a Microsoft recomenda migrar para a ID do Microsoft Entra sempre que possível.

O RBAC do Azure inclui muitas funções internas, pode ser atribuído em escopos diferentes e permite que você crie suas próprias funções personalizadas. Ele inclui mais de 100 funções internas. Há cinco funções fundamentais do Azure : Proprietário, Colaborador, Leitor, Administrador de Controle de Acesso Baseado em Função e Administrador de Acesso do Usuário. Para obter mais informações sobre essas funções, visite o tutorial de controle de acesso baseado em função.

Permissões compatíveis com o ACS (Serviços de Comunicação do Azure)

O ACS oferece permissões específicas (acs.read e acs.write) que permitem o acesso controlado a vários recursos.

  • Permissão acs.read: concede a capacidade de recuperar ou exibir dados.
  • Permissão acs.write: permite a modificação ou a criação de dados dentro desses mesmos tipos de recurso.

Além disso, o ACS dá suporte a permissões relacionadas a email:

  • acs.email.read: permite ler ou acessar dados de serviços relacionados a email.
  • acs.email.write: permite a modificação ou a criação de dados de serviços relacionados a email.

Essas permissões são cruciais para garantir o controle de acesso granular e a segurança sobre os recursos do ACS.

Obtendo token RBAC adicional

Para adquirir um token para ACS, você pode usar a MSAL (Biblioteca de Autenticação da Microsoft). Aqui está um guia passo a passo:

  1. Registrar um aplicativo no Azure AD: verifique se seu aplicativo está registrado no Azure AD.
  2. Instale a MSAL: instale a biblioteca MSAL para sua plataforma (por exemplo, Microsoft.Identity.Client para .NET).
  3. Configurar a MSAL: configure a MSAL com a ID do cliente, a ID do locatário e o segredo do cliente do aplicativo.
  4. Adquirir um token: use a MSAL para adquirir um token com o escopo necessário (https://communication.azure.com/.default).

Para obter instruções detalhadas e exemplos de código, consulte a documentação oficial da MSAL e documentação do Token de Acesso.

Exemplo de solicitação HTTP para emitir o token de acesso do ACS

Pedir:

POST https://my-resource.communication.azure.com/identities/{identity}/:issueAccessToken?api-version=2023-10-01
Authorization: Bearer <your-access-token>
Content-Type: application/json
{
  "scopes": [
    "chat",
    "voip"
  ]
}

Resposta:

{
  "token": "token",
  "expiresOn": "2023-10-10T21:39:39.3244584+00:00"
}

Autenticação de Token de Acesso do Usuário

Os tokens de acesso do usuário permitem que seus aplicativos cliente se autentiquem diretamente nos Serviços de Comunicação do Azure como um determinado usuário ou identidade.

Gerando/obtendo tokens de acesso de usuário

Os Tokens de Acesso do Usuário são gerados por você em um ambiente confiável. Gerá-los usando o SDK de Identidade dos Serviços de Comunicação do Azure é a maneira mais fácil. Para obter mais informações, consulte criando e gerenciando tokens de acesso do usuário.

Usando um token de acesso de usuário em uma solicitação

Depois de ter um Token de Acesso de Usuário adequado, você pode incluí-lo em suas solicitações à API REST dos Serviços de Comunicação do Azure. Para fazer isso, você precisa fornecê-lo dentro do cabeçalho Authorization usando o esquema de autenticação HTTP do portador Authorization: Bearer <token>.

Consulte Também

Para obter informações adicionais sobre a autenticação dos Serviços de Comunicação do Azure, você também pode examinar: