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.
Os agentes geralmente precisam executar ações em nome dos usuários que usam o agente. A primeira etapa para criar um agente interativo é autenticar o usuário. Este artigo explica o processo de criação de um serviço Web simples que autentica um usuário. O modelo de identidade do agente é usado para proteger o serviço web. As etapas incluem:
- Um cliente obtém um token de acesso delimitado por o blueprint de identidade do agente.
- Valide esse token na API do agente.
- Extraia declarações sobre o usuário que podem ser usadas para autorização.
Pré-requisitos
Blueprints de identidade do agente. Registre o ID do aplicativo de identidade do agente blueprint (ID do cliente).
Solicitar um token para o modelo de identidade do agente
Para autenticar um usuário, o aplicativo cliente (como um front-end ou aplicativo móvel) deve iniciar uma solicitação de autorização do OAuth 2.0 para obter um token em que o público-alvo seja o blueprint de identidade do agente.
Redirecione o usuário para o ponto de extremidade de autorização do Entra ID do Microsoft com os seguintes parâmetros:
GET https://login.microsoftonline.com/<my-test-tenant>/oauth2/v2.0/authorize?client_id=<client-id> &response_type=code &redirect_uri=<redirect_uri> &response_mode=query &scope=api://<agent-blueprint-id>/access_agent &state=abc123Depois que o usuário entra, seu aplicativo recebe um código de autorização no URI de redirecionamento. Você o troca por um token de acesso:
POST https://login.microsoftonline.com/<my-test-tenant>/oauth2/v2.0/token Content-Type: application/x-www-form-urlencoded client_id=<client-id> grant_type=authorization_code code=<authorization_code> redirect_uri=<redirect_uri> scope=api://<agent-blueprint-id>/access_agent client_secret=<client-secret> # Only if using a confidential clientA resposta JSON contém um token de acesso que pode ser usado para acessar a API do agente.
Validar o token na API do agente
O agente, normalmente exposto por meio de uma API Web, deve validar o token de acesso. Sempre use uma biblioteca aprovada para executar a validação de token e nunca deve implementar seu próprio código de validação de token.
Instale o
Microsoft.Identity.Webpacote NuGet:dotnet add package Microsoft.Identity.WebEm seu projeto de API Web do ASP.NET Core, implemente a autenticação da ID do Microsoft Entra:
// Program.cs using Microsoft.Identity.Web; var builder = WebApplication.CreateBuilder(args); builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd")); var app = builder.Build(); app.UseAuthentication(); app.UseAuthorization();Configurar credenciais de autenticação no arquivo appsettings.json :
Aviso
Segredos do cliente não devem ser usados como credenciais de cliente em ambientes de produção para planos de identidade do agente devido a riscos de segurança. Em vez disso, use métodos de autenticação mais seguros, como fic (credenciais de identidade federadas) com identidades gerenciadas ou certificados de cliente. Esses métodos fornecem segurança aprimorada eliminando a necessidade de armazenar segredos confidenciais diretamente na configuração do aplicativo.
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "<my-test-tenant>",
"ClientId": "<agent-blueprint-id>",
"Audience": "<agent-blueprint-id>",
"ClientCredentials": [
{
"SourceType": "ClientSecret",
"ClientSecret": "your-client-secret"
}
]
}
Para obter mais informações sobre Microsoft.Identity.Web, consulte documentos oficiais.
Validar declarações de usuário
Depois de validar o token de acesso, o agente agora pode identificar o usuário e executar verificações de autorização. Esta rota de API de exemplo extrai declarações de usuário do token de acesso e as retorna na resposta da API:
app.MapGet("/hello-agent", (HttpContext httpContext) =>
{
var claims = httpContext.User.Claims.Select(c => new
{
Type = c.Type,
Value = c.Value
});
return Results.Ok(claims);
})
.RequireAuthorization();