Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Gli agenti spesso devono eseguire azioni per conto degli utenti che usano l'agente. Il primo passaggio per creare un agente interattivo consiste nell'autenticare l'utente. Questo articolo illustra il processo di creazione di un semplice servizio Web che autentica un utente. Il progetto di identità dell'agente viene usato per proteggere il servizio Web. La procedura include i passaggi seguenti:
- Un cliente ottiene un token di accesso con ambito definito per il blueprint dell'identità dell'agente.
- Convalidare il token nell'API dell'agente.
- Estrarre attestazioni sull'utente che possono essere usate per l'autorizzazione.
Prerequisiti
Schemi di identità dell'agente. Registrare l'ID app dello schema dell'identità dell'agente (ID client).
Richiedere un token per il progetto di identità dell'agente
Per autenticare un utente, l'app client ,ad esempio un front-end o un'app per dispositivi mobili, deve avviare una richiesta di autorizzazione OAuth 2.0 per ottenere un token in cui il gruppo di destinatari è il progetto di identità dell'agente.
Reindirizzare l'utente all'endpoint di autorizzazione di Microsoft Entra ID con i parametri seguenti:
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=abc123Dopo l'accesso dell'utente, l'app riceve un codice di autorizzazione all'URI di reindirizzamento. Si scambia per un token di accesso:
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 clientLa risposta JSON contiene un token di accesso che può essere usato per accedere all'API dell'agente.
Convalidare il token nell'API dell'agente
L'agente, in genere esposto tramite un'API Web, deve convalidare il token di accesso. Usare sempre una libreria approvata per eseguire la convalida dei token e non implementare mai il proprio codice di convalida del token.
Installare il
Microsoft.Identity.Webpacchetto NuGet:dotnet add package Microsoft.Identity.WebNel progetto API Web di ASP.NET Core implementare l'autenticazione di Microsoft Entra ID:
// 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();Configurare le credenziali di autenticazione nel file appsettings.json :
Avvertimento
I segreti client non devono essere usati come credenziali client negli ambienti di produzione per i progetti di identità agente a causa di rischi per la sicurezza. Usare invece metodi di autenticazione più sicuri, ad esempio le credenziali di identità federate (FIC) con identità gestite o certificati client. Questi metodi offrono una sicurezza avanzata eliminando la necessità di archiviare segreti sensibili direttamente all'interno della configurazione dell'applicazione.
"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"
}
]
}
Per altre informazioni su Microsoft.Identity.Web, vedere la documentazione ufficiale.
Convalidare le attestazioni utente
Dopo aver convalidato il token di accesso, l'agente può ora identificare l'utente ed eseguire i controlli di autorizzazione. Questa route API di esempio estrae le attestazioni utente dal token di accesso e le restituisce nella risposta dell'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();