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 ele sozinho.
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 finalidades diferentes:
- de autenticação de chave de acesso para operações de SMS, Network Traversal, Call Automation, Identity e token de acesso. A autenticação de chave de acesso é adequada para aplicativos executados em um ambiente de serviço confiável.
- de autenticação do RBAC do Azure para controlar o acesso aos recursos aproveitando o RBAC do Azure atribuindo funções do Azure.
- autenticação de Token de Acesso de Usuário para Chat e Chamadas. Os tokens de acesso de usuário permitem que seus aplicativos cliente sejam autenticados 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 aos 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 de chave de acesso é usada quando as solicitações não são feitas pelo seu aplicativo de usuário final. Execute essas solicitações em um ambiente de serviço confiável.
Nesse método de autenticação, as solicitações são assinadas usando um código de autenticação de mensagem baseado em hash (HMAC) gerado pelo cliente.
Antes de começar, certifique-se de:
- 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ê pode continuar assinando sua solicitação.
Assinando uma solicitação HTTP
Certifique-se de que tem os seguintes valores disponíveis:
- Método de solicitação HTTP (por exemplo,
GET
ouPUT
) - Carimbo de data/hora UTC coordenado para a solicitação de acordo com o padrão RFC1123
- Host de solicitação HTTP (o componente URI
<authority>
, conforme especificado no RFC2396) - Corpo da solicitação HTTP com hash 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>
- Método de solicitação HTTP (por exemplo,
Construa a cadeia de caracteres a ser assinada concatenando os valores da seguinte maneira:
StringToSign=Verb + "\n" URIPathAndQuery + "\n" Timestamp + ";" + Host + ";" + ContentHash
Gere uma assinatura HMAC-256 da cadeia de caracteres codificada UTF-8 que você criou na etapa anterior. Em seguida, codifice seus resultados como Base64. Você também precisa Base64-decodificar sua chave de acesso. Use o seguinte formato (mostrado como pseudo-código):
Signature=Base64(HMAC-SHA256(UTF8(StringToSign), Base64.decode(<your_access_key>)))
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 certos 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 HMAC .
Autenticação RBAC do Azure
A plataforma Azure fornece acesso baseado em função (Azure RBAC) para controlar o acesso aos recursos. A entidade de segurança do 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 oferece segurança superior e facilidade de uso em relação a outras opções de autorização. Por exemplo, ao usar a identidade gerenciada, você evita ter que armazenar a chave de acesso da conta dentro do código, como faz com a autenticação da chave de acesso. Embora você possa continuar a usar a autenticação de chave de acesso com aplicativos de serviços de comunicação, a Microsoft recomenda mudar para o Microsoft Entra ID 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. Inclui mais de 100 funções integradas. Há cinco funções fundamentais do Azure - Proprietário, Colaborador, Leitor, Administrador de Controle de Acesso Baseado em Função e Administrador de Acesso de Usuário. Para obter mais informações sobre essas funções, visite o tutorial de controle de acesso baseado em função .
Permissões suportadas pelos Serviços de Comunicação do Azure (ACS)
O ACS oferece permissões específicas (acs.read e acs.write) que permitem acesso controlado a vários recursos.
- Permissão ACS.READ: Concede a capacidade de recuperar ou visualizar dados.
- Permissão ACS.WRITE: Permite a modificação ou criação de dados dentro desses mesmos tipos de recursos.
Além disso, o ACS suporta permissões relacionadas a e-mail:
- acs.email.read: permite ler ou acessar dados de serviços relacionados a e-mail.
- acs.email.write: permite a modificação ou criação de dados de serviços relacionados a e-mail.
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 o ACS, você pode usar o MSAL (Microsoft Authentication Library). Aqui está um guia passo-a-passo:
- Registrar um aplicativo no Azure AD: verifique se seu aplicativo está registrado no Azure AD.
- Instalar o MSAL: instale a biblioteca MSAL para sua plataforma (por exemplo,
Microsoft.Identity.Client
para .NET). - Configurar o MSAL: configure o MSAL com o ID do cliente, o ID do locatário e o segredo do cliente do seu aplicativo.
- Adquira um Token: Use o 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 o de documentação oficial do MSAL e documentação do Access Token.
Exemplo de solicitação HTTP para emitir token de acesso ACS
Pedido:
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"
}
Links úteis sobre o Azure RBAC
- Etapas para atribuir uma função do Azure.
- Listar atribuições de função do Azure usando o portal do Azure.
- Delegar o gerenciamento de atribuição de função do Azure a outras pessoas com condições.
- funções personalizadas do Azure.
Autenticação de Token de Acesso de Usuário
Os tokens de acesso de usuário permitem que seus aplicativos cliente sejam autenticados diretamente nos Serviços de Comunicação do Azure como um usuário ou identidade específica.
Gerando/Obtendo Tokens de Acesso de Usuário
Os Tokens de Acesso de Usuário são gerados por você dentro de 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 criação e gerenciamento de tokens de acesso de 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>
.
Ver também
Para obter informações adicionais sobre a autenticação dos Serviços de Comunicação do Azure, você também pode revisar:
- Assinar uma solicitação HTTP.
- Conceptual Authentication documentation - Fornece informações sobre como usar os SDKs para autenticar nas APIs REST.
- Criar um de Serviço de Token de Acesso de Usuário - Um tutorial dos Serviços de Comunicação do Azure, que mostra como criar um serviço de autenticação confiável para gerar Tokens de Acesso de Usuário com o Azure Functions.