Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Com os recursos do Serviço de Bot do Azure provisionados, você pode configurar o seu agente para autenticar com o Serviço de Bot do Azure. O SDK de Agentes do Microsoft 365 oferece opções flexíveis para configuração de autenticação, permitindo que você escolha o método que melhor atende às necessidades e aos requisitos de segurança do seu aplicativo.
O pacote MSAL (Biblioteca de Autenticação da Microsoft) do SDK de Agentes para .NET fornece ferramentas que ajudam você a criar tokens de acesso para clientes de agente e serviços externos usando um agente auto-hospedado do SDK de Agentes do Microsoft 365.
O pacote Microsoft.Agents.Athentication.Msal fornece a classe MsalAuth, que é o provedor principal de autenticação. Você pode configurá-lo para os seguintes tipos de credencial:
- Locatário único com segredo do cliente e Multilocatário com segredo do cliente
- Certificado do cliente usando Impressão digital
- Certificado do cliente usando o nome da entidade (incluindo SN+I)
- Identidade Gerenciada Atribuída pelo Usuário
- Identidade gerenciada atribuída pelo sistema
- Credenciais federadas
- Identidade da carga de trabalho
Instalar o pacote de autenticação
Instale o pacote de autenticação MSAL do NuGet:
dotnet add package Microsoft.Agents.Authentication.Msal
Locatário único vs multilocatário
A autenticação de segredo do cliente dá suporte a configurações de locatário único e multilocatário.
Observação
Para multilocatário, você precisa configurar a instância do Bot do Azure como multilocatário e o registro do aplicativo do Microsoft Entra ID como Contas em qualquer diretório organizacional (qualquer locatário do Microsoft Entra ID – Multilocatário). Para saber mais, consulte Aplicativos únicos e multilocatários.
Configurar uma conexão do
O pacote de autenticação MSAL permite que você crie e use vários clientes distintos com o mecanismo de hospedagem da Estrutura de Agentes. Ao utilizar a biblioteca de autenticação MSAL, você pode fornecer múltiplas configurações de conexão no arquivo de configuração do aplicativo. Cada configuração de conexão pode ser usada para criar um cliente de autenticação nomeado para dar suporte a comunicações com serviços externos ou outros agentes.
Variáveis de ambiente para cada tipo de autenticação
O agente obtém a configuração MSAL no runtime a partir das variáveis de ambiente.
As próximas seções descrevem as configurações obrigatórias e opcionais para cada um dos tipos de autenticação compatíveis com MSAL, acompanhadas de exemplos de configuração para cada tipo.
Locatário único com segredo do cliente
Use estas configurações para definir uma conexão de locatário único que autentica com um segredo do cliente.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| ClientId | Cadeia de caracteres | Nulo | ClientId (AppId) a ser usado ao criar o Token de acesso. |
| ClientSecret | string (cadeia de caracteres) | Nulo | Quando AuthType é ClientSecret, é segredo associado ao cliente, isso só deve ser usado para fins de teste e desenvolvimento. |
| AuthorityEndpoint | Cadeia de caracteres | Nulo | Quando presente, usado como Autoridade para solicitar um token. |
| TenantId | Cadeia de caracteres | Nulo | Quando presente e AuthorityEndpoint for nulo, usado para criar uma Autoridade para solicitar um token |
| Escopos | Lista da cadeia de caracteres | Nulo | Listas Padrão de escopos para os quais solicitar tokens. É usado somente quando nenhum escopo é passado da solicitação de conexão do agente |
Aqui está um exemplo de appsettings para locatário único ClientSecret:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "ClientSecret",
"ClientId": "{{BOT_ID}}",
"ClientSecret": "{{BOT_SECRET}}",
"AuthorityEndpoint": "https://login.microsoftonline.com/{{BOT_TENANT_ID}}",
"Scopes": [
"https://api.botframework.com/.default"
],
}
}
}
Multilocatário com segredo do cliente
Use estas configurações para definir uma conexão de multilocatário que autentica com um segredo do cliente.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| ClientId | Cadeia de caracteres | Nulo | ClientId (AppId) a ser usado ao criar o Token de acesso. |
| ClientSecret | string (cadeia de caracteres) | Nulo | Quando AuthType é ClientSecret, é segredo associado ao cliente, isso só deve ser usado para fins de teste e desenvolvimento. |
| AuthorityEndpoint | Cadeia de caracteres | Nulo | Quando presente, usado como Autoridade para solicitar um token. |
| TenantId | Cadeia de caracteres | Nulo | Quando presente e AuthorityEndpoint for nulo, usado para criar uma Autoridade para solicitar um token |
| Escopos | Lista da cadeia de caracteres | Nulo | Listas Padrão de escopos para os quais solicitar tokens. É usado somente quando nenhum escopo é passado da solicitação de conexão do agente |
Veja um exemplo de appsettings para multilocatário com segredo do cliente:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "ClientSecret",
"ClientId": "{{BOT_ID}}",
"ClientSecret": "{{BOT_SECRET}}",
"AuthorityEndpoint": "https://login.microsoftonline.com/botframework.com",
"Scopes": [
"https://api.botframework.com/.default"
],
}
}
}
Identidade Gerenciada Atribuída pelo Usuário
Utilize estas configurações para definir a aquisição de tokens com uma identidade gerenciada atribuída pelo usuário.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| ClientId | Cadeia de caracteres | Nulo | ClientId da Identidade Gerenciada a ser usado ao criar o Token de acesso. |
Observação
Quando desejar usar os tipos de identidade gerenciada em seu agente, você precisará executar seu host ou cliente em um serviço do Azure e configurar esse serviço com uma Identidade Gerenciada Atribuída pelo Sistema ou uma Identidade Gerenciada Atribuída pelo Usuário.
Aqui está um exemplo de appsettings para Identidade Gerenciada Atribuída pelo Usuário:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "UserManagedIdentity",
"ClientId": "{{BOT_ID}}",
"Scopes": [
"https://api.botframework.com/.default"
]
}
}
}
Identidade gerenciada atribuída pelo sistema
Quando você usa SystemManagedIdentity, o agente ignora qualquer ID de cliente fornecida e usa a identidade gerenciada pelo sistema.
Observação
Quando desejar usar os tipos de identidade gerenciada em seu agente, você precisará executar seu host ou cliente em um serviço do Azure e configurar esse serviço com uma Identidade Gerenciada Atribuída pelo Sistema ou uma Identidade Gerenciada Atribuída pelo Usuário.
Aqui está um exemplo de appsettings do tipo de autenticação de Identidade Gerenciada Atribuída pelo Sistema:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "SystemManagedIdentity",
"Scopes": [
"https://api.botframework.com/.default"
]
}
}
}
Credenciais federadas
Use estas configurações para definir uma conexão que realiza a troca de credenciais federadas por tokens de acesso.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| ClientId | Cadeia de caracteres | Nulo | ClientId (AppId) a ser usado ao criar o Token de acesso. |
| AuthorityEndpoint | Cadeia de caracteres | Nulo | Quando presente, usado como Autoridade para solicitar um token. |
| TenantId | Cadeia de caracteres | Nulo | Quando presente e AuthorityEndpoint for nulo, usado para criar uma Autoridade para solicitar um token |
| Escopos | Lista da cadeia de caracteres | Nulo | Listas Padrão de escopos para os quais solicitar tokens. É usado somente quando nenhum escopo é passado da solicitação de conexão do agente |
| FederatedClientId | Cadeia de caracteres | Nulo | ClientId da Identidade Gerenciada a ser usado ao criar o Token de acesso. |
Aqui está um exemplo de appsettings para Federated Credentials:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "FederatedCredentials",
"ClientId": "{{BOT_ID}}",
"AuthorityEndpoint": "https://login.microsoftonline.com/{{BOT_TENANT_ID}}",
"FederatedClientId": "{{BOT_FEDERATED_ID}}",
"Scopes": [
"https://api.botframework.com/.default"
]
}
}
}
Identidade da carga de trabalho
Use estas configurações para definir a autenticação da identidade de carga de trabalho usando um arquivo de token federado.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| ClientId | Cadeia de caracteres | Nulo | ClientId (AppId) a ser usado ao criar o Token de acesso. |
| AuthorityEndpoint | Cadeia de caracteres | Nulo | Quando presente, usado como Autoridade para solicitar um token. |
| TenantId | Cadeia de caracteres | Nulo | Quando presente e AuthorityEndpoint for nulo, usado para criar uma Autoridade para solicitar um token |
| Escopos | Lista da cadeia de caracteres | Nulo | Listas Padrão de escopos para os quais solicitar tokens. É usado somente quando nenhum escopo é passado da solicitação de conexão do agente |
| FederatedTokenFile | Cadeia de caracteres | Nulo | O arquivo de token (o mesmo que AKS AZURE_FEDERATED_TOKEN_FILE env var) |
Aqui está um exemplo de appsettings para locatário único WorkloadIdentity:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "WorkloadIdentity",
"ClientId": "{{BOT_ID}}",
"AuthorityEndpoint": "https://login.microsoftonline.com/{{BOT_TENANT_ID}}",
"FederatedTokenFile": "{{BOT_FEDERATED_TOKENFILE}}",
"Scopes": [
"https://api.botframework.com/.default"
]
}
}
}
Opções de declaração de cliente de identidade de carga de trabalho ou de credenciais federadas opcionais
Use estas configurações opcionais para personalizar o conteúdo da declaração do cliente em fluxos de identidade de carga de trabalho ou credenciais federadas.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| ClientId | Cadeia de caracteres | Nulo | ID do Cliente para a qual uma declaração assinada é solicitada |
| TokenEndpoint | Cadeia de caracteres | Nulo | O ponto de extremidade de token pretendido |
| Reclamações | Cadeia de caracteres | Nulo | Declarações a serem incluídas na declaração do cliente |
| ClientCapabilities | Cadeia de caracteres[] | Nulo | Funcionalidades que o aplicativo cliente declara. |
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "WorkloadIdentity",
"ClientId": "{{BOT_ID}}",
"AuthorityEndpoint": "https://login.microsoftonline.com/{{BOT_TENANT_ID}}",
"FederatedTokenFile": "{{BOT_FEDERATED_TOKENFILE}}",
"Scopes": [
"https://api.botframework.com/.default"
],
"AssertionRequestOptions": {
"ClientId": null,
"TokenEndpoint": null,
"Claims": null,
"ClientCapabilities": null,
}
}
}
}
Certificado usando o nome da entidade (incluindo SN+I)
Use essas configurações para definir a autenticação baseada em certificado pelo nome da entidade do certificado, incluindo cenários SN+I.
| AuthType | Tipo | Valor padrão | descrição |
|---|---|---|---|
| AuthorityEndpoint | Cadeia de caracteres | Nulo | Quando presente, usado como Autoridade para solicitar um token. |
| TenantId | Cadeia de caracteres | Nulo | Quando presente e AuthorityEndpoint for nulo, usado para criar uma Autoridade para solicitar um token |
| Escopos | Lista da cadeia de caracteres | Nulo | Listas Padrão de escopos para os quais solicitar tokens. É usado somente quando nenhum escopo é passado da solicitação de conexão do agente |
| ClientId | Cadeia de caracteres | Nulo | ClientId (AppId) a ser usado ao criar o Token de acesso. |
| CertSubjectName | Cadeia de caracteres | Nulo | Quando AuthType é CertificateSubjectName, esse é o nome do assunto que é procurado |
| CertStoreName | Cadeia de caracteres | "Meu" | Quando AuthType é CertificateSubjectName ou Certificate, indica em qual repositório de certificados procurar |
| ValidCertificateOnly | bool | Verdadeiro | Requer que o certificado tenha uma cadeia válida. |
| SendX5C | bool | Falso | Habilita a rotação automática de certificado com a configuração apropriada. |
Aqui está um exemplo de appsettings para certificado usando o nome da entidade para Nome da Entidade e Emissor (SNI) e multilocatário:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "CertificateSubjectName",
"ClientId": "{{BOT_ID}}",
"CertSubjectName": "{{BOT_CERT_SUBJECTNAME}}",
"SendX5C": true,
"AuthorityEndpoint": "https://login.microsoftonline.com/botframework.com",
"Scopes": [
"https://api.botframework.com/.default"
]
}
}
},
Aqui está um exemplo de appsettings para Nome da Entidade do Certificado para SN+I e locatário único:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "CertificateSubjectName",
"ClientId": "{{BOT_ID}}",
"CertSubjectName": "{{BOT_CERT_SUBJECTNAME}}",
"SendX5C": true,
"AuthorityEndpoint": "https://login.microsoftonline.com/{{BOT_TENANT_ID}}",
"Scopes": [
"https://api.botframework.com/.default"
]
}
}
},
Certificado do cliente usando Impressão digital
Use essas configurações para definir a autenticação baseada em certificado por impressão digital do certificado.
| AuthType | Tipo | Valor padrão | descrição |
|---|---|---|---|
| AuthorityEndpoint | Cadeia de caracteres | Nulo | Quando presente, usado como Autoridade para solicitar um token. |
| TenantId | Cadeia de caracteres | Nulo | Quando presente e AuthorityEndpoint for nulo, usado para criar uma Autoridade para solicitar um token |
| Escopos | Lista da cadeia de caracteres | Nulo | Listas Padrão de escopos para os quais solicitar tokens. É usado somente quando nenhum escopo é passado da solicitação de conexão do agente |
| ClientId | Cadeia de caracteres | Nulo | ClientId (AppId) a ser usado ao criar o Token de acesso. |
| CertThumbprint | Cadeia de caracteres | Nulo | Impressão digital do certificado a ser carregado, válida somente quando AuthType é definido como Certificado |
| CertStoreName | Cadeia de caracteres | "Meu" | Quando AuthType é CertificateSubjectName ou Certificate, indica em qual repositório de certificados procurar |
| ValidCertificateOnly | bool | Verdadeiro | Requer que o certificado tenha uma cadeia válida. |
| SendX5C | bool | Falso | Habilita a rotação automática de certificado com a configuração apropriada. |
Aqui está um exemplo de appsettings para certificado usando a impressão digital do certificado:
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "Certificate",
"ClientId": "{{BOT_ID}}",
"CertThumbprint": "{{BOT_CERT_THUMBPRINT}}",
"AuthorityEndpoint": "https://login.microsoftonline.com/botframework.com",
"Scopes": [
"https://api.botframework.com/.default"
]
}
}
},
Provedor de configuração padrão para MSAL
Para facilitar a configuração, fornecemos uma extensão do provedor de serviços para adicionar as configurações padrão para MSAL ao Agente.
Aqui está um exemplo do provedor de configuração MSAL padrão para um host ASP.NET principal em uma classe Program.cs:
Isso é gerenciado pela instância IConnections registrada. A instância IConnections é adicionada por padrão quando você usa AddAgent.
// Register your AgentApplication
builder.AddAgent<MyAgent>();
No entanto, caso não esteja usando AddAgent, você deverá registrar explicitamente a instância IConnections.
// Add Connections object to access configured token connections.
builder.Services.AddSingleton<IConnections, ConfigurationConnections>();
Mais opções de configuração do MSAL
Há várias opções de configuração compartilhadas que controlam as definições gerais para a aquisição de tokens do Microsoft Entra Identity.
Essas configurações são:
Use as seguintes configurações compartilhadas para controlar o tempo limite das solicitações MSAL, o comportamento de repetição e o nível de detalhamento dos logs.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| MSALRequestTimeout | TimeSpan | 30segundos | Essa configuração controla por quanto tempo o cliente aguardará uma resposta do Microsoft Entra ID após o envio de uma solicitação. |
| MSALRetryCount | Int | 3 | Essa configuração controla quantas tentativas de repetição o provedor faz para uma solicitação individual de um token. |
| MSALEnabledLogPII | Bool | Falso | Esta configuração controla se o MSAL fornece ao logger anexado dados pessoais. |
Essas configurações são compartilhadas com todos os clientes que criam usando o Provedor de Autenticação MSAL.
Essas configurações devem ser lidas de um Leitor de IConfiguration, em uma seção de configuração chamada "MSALConfiguration".
Observação
MSALConfiguration é uma configuração opcional. Se você não definir essa configuração, serão usadas as configurações padrão para esses valores.
Aqui está um exemplo da entrada em um arquivo appsettings.json:
{
"MSALConfiguration": {
"MSALEnabledLogPII": "true",
"MSALRequestTimeout": "00:00:40",
"MSALRetryCount": "1"
},
}
Nesse caso, esse bloco de configurações instruiria todos os clientes MSAL criados com o provedor MSAL a habilitar o registro em log de dados pessoais, definiria o tempo limite como 40 segundos e reduziria a contagem de repetições para 1.
Essa extensão procura uma seção de configuração chamada "MSALConfiguration" no objeto IConfiguration e cria um objeto de configuração MSAL a partir dele.
Se a seção MSALConfig não for encontrada, ela criará o Objeto de Configuração MSAL usando valores padrão.
// Add default agent MsalAuth support
builder.Services.AddDefaultMsalAuth(builder.Configuration);
// Register your AgentApplication
builder.AddAgent<MyAgent>();
Suporte ao registro em log para autenticação
O sistema de autenticação MSAL permite o registro em log independente de fluxos de autenticação para integração de telemetria, caso seja necessário solucionar problemas de aquisição de token.
Para habilitar o registro em log, adicione uma entrada de Microsoft.Agents.Authentication.Msal às configurações do aplicativo para configurar um ILogger que vai relatar as operações de token das suas conexões. Se você adicionar a opção MSALEnabledLogPII, isso também incluirá dados pessoais da sua conexão.
Aqui está um exemplo do bloco de registro em log neste caso:
"Logging": {
"LogLevel": {
"Default": "Warning",
"Microsoft.Agents": "Warning",
"Microsoft.Hosting.Lifetime": "Information",
"Microsoft.Agents.Authentication.Msal": "Trace"
}
}
Nesse caso, o registro em log está habilitado para vários módulos, incluindo Microsoft.Agents.Authentication.Msal, em que o nível de rastreamento é "Rastreamento" para MSAL.
O SDK do JavaScript requer um AuthenticationProvider para obter Tokens Web JSON (JWT) e enviar atividades para o canal de destino. Para obter mais informações, consulte Tokens de acesso no plataforma de identidade da Microsoft.
O pacote @microsoft/agents-hosting fornece um provedor de autenticação padrão baseado na MSAL (Biblioteca de Autenticação da Microsoft). Você pode configurá-lo para os seguintes tipos de autenticação:
- Locatário único com segredo do cliente
- Multilocatário com segredo do cliente
- Identidade Gerenciada pelo Usuário
- Identidade Gerenciada pelo Sistema
- Credenciais federadas
- Identidade da carga de trabalho
- Certificado
Instalar o pacote de autenticação
Instale o pacote de autenticação MSAL a partir do npm:
npm install @microsoft/agents-hosting
Locatário único vs. multilocatário
A autenticação de segredo do cliente e certificado do cliente dá suporte a configurações tanto de locatário único quanto em multilocatário.
Identidade Gerenciada Atribuída pelo Usuário, Identidade Gerenciada do Sistema, Credenciais Federadas e Identidade da Carga de Trabalho só suportam configurações de locatário único.
Observação
Para multilocatário, você precisa configurar a instância do Bot do Azure como multilocatário e o registro do aplicativo do Microsoft Entra ID como Contas em qualquer diretório organizacional (qualquer locatário do Microsoft Entra ID – Multilocatário). Para saber mais, consulte Aplicativos únicos e multilocatários.
Configurar uma conexão do
A biblioteca de autenticação MSAL permite que você crie e use vários clientes distintos com o mecanismo de hospedagem Estrutura de Agentes. Ao utilizar a biblioteca de autenticação MSAL, você pode fornecer múltiplas configurações de conexão no arquivo de configuração do aplicativo. Cada configuração de conexão pode criar um cliente de autenticação nomeado para suportar comunicações com serviços externos ou outros agentes.
As seções a seguir descrevem as configurações obrigatórias e opcionais para cada um dos tipos de autenticação suportados pelo provedor de autenticação MSAL. Elas também incluem exemplos de trechos de configuração para cada tipo.
Variáveis de ambiente para cada tipo de autenticação
O agente obtém a configuração da MSAL no runtime a partir das variáveis de ambiente usando a função auxiliar loadAuthConfigFromEnv(): AuthConfiguration. O CloudAdapter é inicializado com o AuthConfiguration.
As configurações de conexão usam o formato CONNECTIONS__<CONNECTION_NAME>__SETTINGS__<PROPERTY>.
Quando AUTHTYPE está presente, o SDK usa esse valor para selecionar o fluxo de aquisição do token. Quando AUTHTYPE é omitido, o SDK retorna ao comportamento herdado e infere o fluxo de autenticação a partir das propriedades de credenciais configuradas.
Locatário único com segredo do cliente
Use estas configurações para definir uma conexão de locatário único que autentica com um segredo do cliente.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| CLIENTID | Cadeia de caracteres | Nenhum | A ID do cliente (ID do aplicativo) do registro do aplicativo. |
| CLIENTSECRET | Cadeia de caracteres | Nenhum | O segredo associado ao registro do aplicativo. Use somente para fins de teste e desenvolvimento. |
| TENANTID | Cadeia de caracteres | Nenhum | O ID do locatário do Microsoft Entra ID para o registro do aplicativo. |
| AUTHTYPE | Cadeia de caracteres | Nenhum | Defina como ClientSecret. |
| ESCOPO | Cadeia de caracteres | Nenhum | Escopo de recurso padrão para solicitar tokens para quando um não for fornecido pelo chamador. |
| AUTHORITY | Cadeia de caracteres | Nenhum | Quando presente, usado como a autoridade para solicitar um token. Se não estiver definida, o padrão será https://login.microsoftonline.com/{TENANTID}. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=ClientSecret
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTSECRET={app-registration-secret}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__TENANTID={tenant-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__SCOPE=https://api.botframework.com
Locatário único com segredo do cliente é a configuração recomendada para desenvolvimento local.
Multilocatário com segredo do cliente
Para cenários multilocatário que usam um segredo do cliente, defina o ponto de extremidade de autoridade para o locatário botframework.com:
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| CLIENTID | Cadeia de caracteres | Nenhum | A ID do cliente (ID do aplicativo) do registro do aplicativo. |
| CLIENTSECRET | Cadeia de caracteres | Nenhum | O segredo associado ao registro do aplicativo. Use somente para fins de teste e desenvolvimento. |
| AUTHTYPE | Cadeia de caracteres | Nenhum | Defina como ClientSecret. |
| AUTHORITY | Cadeia de caracteres | Nenhum | Definido como https://login.microsoftonline.com/botframework.com para multilocatário. |
| ESCOPO | Cadeia de caracteres | Nenhum | Escopo de recurso padrão para solicitar tokens para quando um não for fornecido pelo chamador. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=ClientSecret
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTSECRET={app-registration-secret}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHORITY=https://login.microsoftonline.com/botframework.com
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__SCOPE=https://api.botframework.com
UserManagedIdentity
Use essas configurações para definir aquisições de tokens com uma Identidade Gerenciada Atribuída pelo Usuário.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| CLIENTID | Cadeia de caracteres | Nenhum | A ID do cliente da identidade gerenciada a ser usada ao criar o token de acesso. |
| AUTHTYPE | Cadeia de caracteres | Nenhum | Defina como UserManagedIdentity. |
| ESCOPO | Cadeia de caracteres | Nenhum | Escopo de recurso padrão para solicitar tokens para quando um não for fornecido pelo chamador. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=UserManagedIdentity
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={managed-identity-client-id}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__SCOPE=https://api.botframework.com
Identidade Gerenciada é a configuração recomendada para cenários de produção. Para saber mais, confira Identidades gerenciadas para os recursos do Azure.
Observação
Se você usar tipos de identidade gerenciada, seu host ou cliente deverá ser executado em um serviço do Azure configurado com uma identidade gerenciada atribuída pelo sistema ou atribuída pelo usuário. Para saber quais serviços do Azure oferecem suporte a identidades gerenciadas, consulte Identidades gerenciadas para recursos do Azure.
SystemManagedIdentity
Se você usar o tipo de autenticação SystemManagedIdentity, a ID do cliente será ignorada e a identidade gerenciada pelo sistema para o serviço será usada.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| AUTHTYPE | Cadeia de caracteres | Nenhum | Defina como SystemManagedIdentity. |
| ESCOPO | Cadeia de caracteres | Nenhum | Escopo de recurso padrão para solicitar tokens para quando um não for fornecido pelo chamador. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=SystemManagedIdentity
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__SCOPE=https://api.botframework.com
Observação
Se você usar tipos de identidade gerenciada, seu host ou cliente deverá ser executado em um serviço do Azure configurado com uma identidade gerenciada atribuída pelo sistema ou atribuída pelo usuário. Para saber quais serviços do Azure oferecem suporte a identidades gerenciadas, consulte Identidades gerenciadas para recursos do Azure.
FederatedCredentials
Use estas configurações para definir um aplicativo de locatário único que autentica por meio de Credenciais Federadas.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| CLIENTID | Cadeia de caracteres | Nenhum | A ID do cliente (ID do aplicativo) do registro do aplicativo. |
| TENANTID | Cadeia de caracteres | Nenhum | O ID do locatário do Microsoft Entra ID para o registro do aplicativo. |
| AUTHTYPE | Cadeia de caracteres | Nenhum | Defina como FederatedCredentials. |
| AUTHORITY | Cadeia de caracteres | Nenhum | Quando presente, usado como a autoridade para solicitar um token. Se não estiver definida, o padrão será https://login.microsoftonline.com/{TENANTID}. |
| ESCOPO | Cadeia de caracteres | Nenhum | Escopo de recurso padrão para solicitar tokens para quando um não for fornecido pelo chamador. |
| FICCLIENTID | Cadeia de caracteres | Nenhum | A ID do cliente da identidade gerenciada usada para obter o token externo de credenciais federadas. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=FederatedCredentials
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__TENANTID={tenant-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHORITY=https://login.microsoftonline.com/{tenant-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__FICCLIENTID={managed-identity-client-id}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__SCOPE=https://api.botframework.com
Para mais informações, veja Autenticação usando Credenciais de Identidade Federada.
WorkloadIdentity
Use essas configurações para definir a aquisição de tokens por meio da Identidade de Carga de Trabalho do Microsoft Entra.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| AUTHTYPE | Cadeia de caracteres | Nenhum | Defina como WorkloadIdentity. |
| CLIENTID | Cadeia de caracteres | Nenhum | A ID do cliente (ID do aplicativo) do registro do aplicativo. |
| TENANTID | Cadeia de caracteres | Nenhum | O ID do locatário do Microsoft Entra ID para o registro do aplicativo. |
| AUTHORITY | Cadeia de caracteres | Nenhum | Quando presente, usado como a autoridade para solicitar um token. Se não estiver definida, o padrão será https://login.microsoftonline.com/{TENANTID}. |
| ESCOPO | Cadeia de caracteres | Nenhum | Escopo de recurso padrão para solicitar tokens para quando um não for fornecido pelo chamador. |
| FEDERATEDTOKENFILE | Cadeia de caracteres | Nenhum | Caminho para o arquivo de token federado fornecido pelo ambiente de identidade da carga de trabalho. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=WorkloadIdentity
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__TENANTID={tenant-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHORITY=https://login.microsoftonline.com/{tenant-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__FEDERATEDTOKENFILE=/var/run/secrets/azure/tokens/azure-identity-token
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__SCOPE=https://api.botframework.com
Locatário único com certificado do cliente
Use estas configurações para definir uma conexão de locatário único que autentica com um certificado do cliente.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| CLIENTID | Cadeia de caracteres | Nenhum | A ID do cliente (ID do aplicativo) do registro do aplicativo. |
| TENANTID | Cadeia de caracteres | Nenhum | O ID do locatário do Microsoft Entra ID para o registro do aplicativo. |
| AUTHTYPE | Cadeia de caracteres | Nenhum | Defina como Certificate. |
| CERTPEMFILE | Cadeia de caracteres | Nenhum | Caminho para o arquivo de certificado do PEM (Privacy Enhanced Mail). |
| CERTKEYFILE | Cadeia de caracteres | Nenhum | Caminho para o arquivo de chave privada do certificado. |
| ESCOPO | Cadeia de caracteres | Nenhum | Escopo de recurso padrão para solicitar tokens para quando um não for fornecido pelo chamador. |
| AUTHORITY | Cadeia de caracteres | Nenhum | Quando presente, usado como a autoridade para solicitar um token. |
| SENDX5C | Booliano | Falso | Habilita o envio do cabeçalho x5c durante a aquisição de token usando certificado. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=Certificate
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__TENANTID={tenant-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CERTPEMFILE={path-to-pem-file}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CERTKEYFILE={path-to-key-file}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__SCOPE=https://api.botframework.com
Observação
O SDK JS lê os arquivos de certificado PEM e de chave privada diretamente no disco e calcula automaticamente a impressão digital do certificado. O arquivo de chave não deve usar senha.
Multilocatário com certificado do cliente
Para cenários multilocatário que usam um certificado do cliente, defina o ponto de extremidade de autoridade para o locatário botframework.com:
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=Certificate
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CERTPEMFILE={path-to-pem-file}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CERTKEYFILE={path-to-key-file}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHORITY=https://login.microsoftonline.com/botframework.com
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__SCOPE=https://api.botframework.com
Compatibilidade com versões anteriores do SDK do Azure Bot Framework
Para carregar a configuração usando o mesmo formato do SDK do Azure Bot Framework, use loadPrevAuthConfigFromEnv(): AuthConfiguration.
Ao migrar configurações existentes do SDK do Bot Framework, use estes nomes de configuração legados.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| MicrosoftAppTenantId | Cadeia de caracteres | Nulo | A ID do locatário do Microsoft Entra ID (formato herdado do SDK do Bot Framework). |
| MicrosoftAppId | Cadeia de caracteres | Nulo | A ID do cliente (ID do aplicativo) do registro do aplicativo (formato herdado do SDK do Bot Framework). |
| MicrosoftAppPassword | Cadeia de caracteres | Nulo | O segredo do aplicativo (formato legado do SDK do Bot Framework). |
MicrosoftAppTenantId={tenant-id-guid}
MicrosoftAppId={app-id-guid}
MicrosoftAppPassword={app-registration-secret}
Provedor de autenticação personalizado
Usuários que precisam de um provedor de autenticação personalizado podem implementar a interface:
export interface AuthProvider {
getAccessToken: (authConfig: AuthConfiguration, scope: string) => Promise<string>
}
Como exemplo, implemente o AuthProvider usando @azure/identity:
import { EnvironmentCredential } from "@azure/identity"
import { AuthProvider, AuthConfiguration } from "@microsoft/agents-hosting"
class DevTokenProvider implements AuthProvider {
async getAccessToken(authConfig: AuthConfiguration): Promise<string> {
const id = new EnvironmentCredential()
const tokenResponse = await id.getToken("https://api.botframework.com/.default")
return tokenResponse.token
}
Para instanciar o CloudAdapter usando o DevTokenProvider
const adapter = new CloudAdapter(authConfig, new DevTokenProvider())
amework.com/.default") return tokenResponse.token }
To instantiate the `CloudAdapter` by using the `DevTokenProvider`
```ts
const adapter = new CloudAdapter(authConfig, new DevTokenProvider())
O pacote MSAL (Biblioteca de Autenticação da Microsoft) do SDK de Agentes para Python fornece ferramentas que ajudam você a criar tokens de acesso para clientes de agente e serviços externos usando um agente auto-hospedado do SDK de Agentes do Microsoft 365.
O pacote microsoft-agents-authentication-msal fornece a classe MsalAuth, que é o provedor principal de autenticação. Você pode configurá-lo para os seguintes tipos de credencial:
- Segredo do cliente
- Certificado do cliente
- Identidade Gerenciada Atribuída pelo Usuário
- Identidade gerenciada atribuída pelo sistema
Instalar o pacote de autenticação
Instale o pacote de autenticação MSAL do PyPI:
pip install microsoft-agents-authentication-msal
Locatário único vs multilocatário
A autenticação de segredo do cliente e certificado do cliente dá suporte a configurações tanto de locatário único quanto em multilocatário.
Identidade Gerenciada Atribuída pelo Usuário e Identidade Gerenciada Atribuída pelo Sistema suportam apenas configurações de locatário único.
Observação
Para multilocatário, você precisa configurar a instância do Bot do Azure como multilocatário e o registro do aplicativo do Microsoft Entra ID como Contas em qualquer diretório organizacional (qualquer locatário do Microsoft Entra ID – Multilocatário). Para saber mais, consulte Aplicativos únicos e multilocatários.
Configurar uma conexão do
A biblioteca de autenticação MSAL permite que você crie e use vários clientes distintos com o mecanismo de hospedagem da Estrutura de Agentes. Cada configuração de conexão cria um cliente de autenticação nomeado para suportar comunicações com serviços externos ou outros agentes.
Forneça a configuração por meio de variáveis de ambiente que usam a convenção de nomenclatura de sublinhado duplo (__) para configurações aninhadas. A classe MsalConnectionManager lê essas variáveis para criar instâncias AgentAuthConfiguration para cada conexão nomeada.
Importante
O gerenciador de conexões requer, no mínimo, uma conexão chamada SERVICE_CONNECTION.
Variáveis de ambiente para cada tipo de autenticação
O agente obtém a configuração de MSAL no runtime a partir de variáveis de ambiente usando a função auxiliar load_configuration_from_env().
As seções a seguir descrevem as configurações necessárias para cada um dos tipos de autenticação suportados, com exemplos de trechos de variáveis de ambiente para cada tipo.
Locatário único com segredo do cliente
Use estas configurações para definir uma conexão de locatário único que autentica com um segredo do cliente.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| CLIENTID | Cadeia de caracteres | Nenhum | A ID do cliente (ID do aplicativo) do registro do aplicativo. |
| CLIENTSECRET | Cadeia de caracteres | Nenhum | O segredo associado ao registro do aplicativo. Use somente para fins de teste e desenvolvimento. |
| TENANTID | Cadeia de caracteres | Nenhum | O ID do locatário do Microsoft Entra ID para o registro do aplicativo. |
| AUTHTYPE | Cadeia de caracteres | ClientSecret | O tipo de autenticação. Defina como ClientSecret. |
| SCOPES | Lista da cadeia de caracteres | Nenhum | Lista padrão de escopos para os quais solicitar tokens. Usado somente quando nenhum escopo é passado da solicitação de conexão do agente. |
| AUTHORITY | Cadeia de caracteres | Nenhum | Quando presente, usado como a autoridade para solicitar um token. Se não estiver definida, o padrão será https://login.microsoftonline.com/{TENANTID}. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=ClientSecret
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTSECRET={app-registration-secret}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__TENANTID={tenant-id-guid}
Locatário único com segredo do cliente é a configuração recomendada para desenvolvimento local.
Multilocatário com segredo do cliente
Para cenários multilocatário que usam um segredo do cliente, defina o ponto de extremidade de autoridade para o locatário botframework.com:
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| CLIENTID | Cadeia de caracteres | Nenhum | A ID do cliente (ID do aplicativo) do registro do aplicativo. |
| CLIENTSECRET | Cadeia de caracteres | Nenhum | O segredo associado ao registro do aplicativo. Use somente para fins de teste e desenvolvimento. |
| AUTHTYPE | Cadeia de caracteres | ClientSecret | O tipo de autenticação. Defina como ClientSecret. |
| AUTHORITY | Cadeia de caracteres | Nenhum | Definido como https://login.microsoftonline.com/botframework.com para multilocatário. |
| SCOPES | Lista da cadeia de caracteres | Nenhum | Lista padrão de escopos para os quais solicitar tokens. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=ClientSecret
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTSECRET={app-registration-secret}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHORITY=https://login.microsoftonline.com/botframework.com
Identidade Gerenciada Atribuída pelo Usuário
Utilize estas configurações para definir a aquisição de tokens com uma identidade gerenciada atribuída pelo usuário.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| CLIENTID | Cadeia de caracteres | Nenhum | A ID do cliente da identidade gerenciada a ser usada ao criar o token de acesso. |
| AUTHTYPE | Cadeia de caracteres | ClientSecret | O tipo de autenticação. Defina como UserManagedIdentity. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={managed-identity-client-id}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=UserManagedIdentity
Identidade Gerenciada é a configuração recomendada para cenários de produção. Para saber mais, confira Identidades gerenciadas para os recursos do Azure.
Observação
Se você usar tipos de identidade gerenciada, seu host ou cliente deverá ser executado em um serviço do Azure configurado com uma identidade gerenciada atribuída pelo sistema ou atribuída pelo usuário. Para saber quais serviços do Azure oferecem suporte a identidades gerenciadas, consulte Identidades gerenciadas para recursos do Azure.
Identidade gerenciada atribuída pelo sistema
Se você usar o tipo de autenticação SystemManagedIdentity, a ID do cliente será ignorada e a identidade gerenciada pelo sistema para o serviço será usada.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| AUTHTYPE | Cadeia de caracteres | ClientSecret | O tipo de autenticação. Defina como SystemManagedIdentity. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=SystemManagedIdentity
Observação
Se você usar tipos de identidade gerenciada, seu host ou cliente deverá ser executado em um serviço do Azure configurado com uma identidade gerenciada atribuída pelo sistema ou atribuída pelo usuário. Para saber quais serviços do Azure oferecem suporte a identidades gerenciadas, consulte Identidades gerenciadas para recursos do Azure.
Locatário único com certificado do cliente
Use estas configurações para definir uma conexão de locatário único que autentica com um certificado do cliente.
| Nome da Configuração | Tipo | Valor padrão | descrição |
|---|---|---|---|
| CLIENTID | Cadeia de caracteres | Nenhum | A ID do cliente (ID do aplicativo) do registro do aplicativo. |
| TENANTID | Cadeia de caracteres | Nenhum | O ID do locatário do Microsoft Entra ID para o registro do aplicativo. |
| AUTHTYPE | Cadeia de caracteres | ClientSecret | O tipo de autenticação. Defina como certificate. |
| CERTPEMFILE | Cadeia de caracteres | Nenhum | Caminho para o arquivo de certificado do PEM (Privacy Enhanced Mail). |
| CERTKEYFILE | Cadeia de caracteres | Nenhum | Caminho para o arquivo de chave privada do certificado. |
| SCOPES | Lista da cadeia de caracteres | Nenhum | Lista padrão de escopos para os quais solicitar tokens. |
| AUTHORITY | Cadeia de caracteres | Nenhum | Quando presente, usado como a autoridade para solicitar um token. |
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=certificate
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__TENANTID={tenant-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CERTPEMFILE={path-to-pem-file}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CERTKEYFILE={path-to-key-file}
Observação
O SDK do Python lê o certificado PEM e os arquivos de chave privada diretamente no disco e calcula automaticamente a impressão digital do certificado. O arquivo de chave não deve usar senha.
Multilocatário com certificado do cliente
Para cenários multilocatário que usam um certificado do cliente, defina o ponto de extremidade de autoridade para o locatário botframework.com:
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHTYPE=certificate
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CLIENTID={app-id-guid}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CERTPEMFILE={path-to-pem-file}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__CERTKEYFILE={path-to-key-file}
CONNECTIONS__SERVICE_CONNECTION__SETTINGS__AUTHORITY=https://login.microsoftonline.com/botframework.com
Configurar o gerenciador de conexões
A classe MsalConnectionManager pode gerenciar múltiplas conexões de autenticação para seu agente. Ela lê as configurações de conexão e cria instâncias de MsalAuth para cada conexão nomeada.
Aqui está um exemplo de como configurar o gerenciador de conexões e iniciar seu agente:
from os import environ
from microsoft_agents.hosting.aiohttp import start_agent_process, CloudAdapter
from microsoft_agents.hosting.core import Authorization, AgentApplication, TurnState, MemoryStorage
from dotenv import load_dotenv
from aiohttp.web import Request, Response, Application, run_app
from microsoft_agents.authentication.msal import MsalConnectionManager
from microsoft_agents.activity import load_configuration_from_env
def start_server(
agent_application: AgentApplication, auth_configuration: AgentAuthConfiguration
):
async def entry_point(req: Request) -> Response:
agent: AgentApplication = req.app["agent_app"]
adapter: CloudAdapter = req.app["adapter"]
return await start_agent_process(req, agent, adapter)
APP = Application()
APP.router.add_post("/api/messages", entry_point)
APP["agent_configuration"] = auth_configuration
APP["agent_app"] = agent_application
APP["adapter"] = agent_application.adapter
try:
run_app(APP, host="localhost", port=environ.get("PORT", 3978))
except Exception as error:
raise error
load_dotenv()
agents_sdk_config = load_configuration_from_env(environ)
STORAGE = MemoryStorage()
CONNECTION_MANAGER = MsalConnectionManager(**agents_sdk_config)
ADAPTER = CloudAdapter(connection_manager=CONNECTION_MANAGER)
AUTHORIZATION = Authorization(STORAGE, CONNECTION_MANAGER, **agents_sdk_config)
AGENT_APP = AgentApplication[TurnState](
storage=STORAGE, adapter=ADAPTER, authorization=AUTHORIZATION, **agents_sdk_config
)
start_server(
agent_application=AGENT_APP, auth_configuration=CONNECTION_MANAGER.get_default_connection_configuration()
)
Confira o exemplo de início rápido do Python para ver um exemplo completo de como usar o MsalConnectionManager em um agente Python.
Provedor de autenticação personalizado
Usuários que precisam de um provedor de autenticação personalizado podem implementar a classe base AccessTokenProviderBase:
from microsoft_agents.hosting.core import AccessTokenProviderBase
class CustomAuthProvider(AccessTokenProviderBase):
async def get_access_token(
self, resource_url: str, scopes: list[str], force_refresh: bool = False
) -> str:
# Implement custom token acquisition logic
token = await your_custom_token_logic(resource_url, scopes)
return token
Suporte ao registro em log para autenticação
O sistema de autenticação MSAL usa o módulo padrão do Python logging com o nome do logger microsoft_agents.authentication.msal. Para habilitar o registro detalhado dos fluxos de autenticação para solucionar problemas na aquisição de tokens, configure o logger em seu aplicativo:
import logging
logging.basicConfig(level=logging.WARNING)
logging.getLogger("microsoft_agents.authentication.msal").setLevel(logging.DEBUG)
Práticas recomendadas de segurança
- Armazene segredos no Azure Key Vault ou em variáveis de ambiente; nunca confirme-os no código-fonte.
- Use identidades gerenciadas sempre que possível, pois eliminam a necessidade de gerenciar segredos.
- Rotacione regularmente os segredos e certificados do cliente.
- Use o princípio de privilégio mínimo para escopos e permissões.