Udostępnij przez


Uwierzytelnianie użytkowników w agentach interakcyjnych

Agenci często potrzebują akcji w imieniu użytkowników korzystających z agenta. Pierwszym krokiem do utworzenia agenta interaktywnego jest uwierzytelnienie użytkownika. W tym artykule przedstawiono proces tworzenia prostej usługi internetowej, która uwierzytelnia użytkownika. Strategia tożsamości agenta służy do zabezpieczania usługi internetowej. Kroki obejmują:

  1. Klient uzyskuje token dostępu związany z planem tożsamości agenta.
  2. Zweryfikuj ten token w interfejsie API agenta.
  3. Wyodrębnij oświadczenia dotyczące użytkownika, którego można użyć do autoryzacji.

Wymagania wstępne

Plany tożsamości agenta. Zapisz identyfikator aplikacji szablonu tożsamości agenta (identyfikator klienta).

Zażądaj tokenu dla szablonu tożsamości agenta

Aby uwierzytelnić użytkownika, aplikacja kliencka (taka jak frontend lub aplikacja mobilna) powinna zainicjować żądanie autoryzacji protokołu OAuth 2.0 w celu uzyskania tokenu, gdzie audytorium jest plan tożsamości agenta.

  1. Przekieruj użytkownika do punktu końcowego autoryzacji Microsoft Entra ID z użyciem następujących parametrów:

    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=abc123
    
  2. Po zalogowaniu się, aplikacja otrzymuje kod autoryzacji w identyfikatorze URI przekierowania przez użytkownika. Wymieniasz go na token dostępu.

    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 client
    

    Odpowiedź JSON zawiera token dostępu, który może służyć do uzyskiwania dostępu do interfejsu API agenta.

Weryfikowanie tokenu w interfejsie API agenta

Agent, zwykle udostępniany za pośrednictwem internetowego interfejsu API, musi zweryfikować token dostępu. Zawsze używaj zatwierdzonej biblioteki do przeprowadzania walidacji tokenu i nigdy nie należy implementować własnego kodu weryfikacji tokenu.

  1. Microsoft.Identity.Web Zainstaluj pakiet NuGet:

    dotnet add package Microsoft.Identity.Web
    
  2. W projekcie internetowego interfejsu API platformy ASP.NET Core zaimplementuj uwierzytelnianie identyfikatora Entra firmy Microsoft:

    // 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();
    
  3. Skonfiguruj poświadczenia uwierzytelniania w plikuappsettings.json :

Ostrzeżenie

Tajne klucze klienta nie powinny być używane jako poświadczenia klienta w środowiskach produkcyjnych dla szablonów tożsamości agenta ze względu na zagrożenia bezpieczeństwa. Zamiast tego należy użyć bezpieczniejszych metod uwierzytelniania, takich jak poświadczenia tożsamości federacyjnej (FIC) z tożsamościami zarządzanymi lub certyfikatami klienta. Te metody zapewniają zwiększone zabezpieczenia, eliminując konieczność przechowywania poufnych wpisów tajnych bezpośrednio w ramach konfiguracji aplikacji.

"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"
    }
]
}

Aby uzyskać więcej informacji na temat witryny Microsoft.Identity.Web, zobacz oficjalne dokumenty.

Weryfikowanie oświadczeń użytkowników

Po zweryfikowaniu tokenu dostępu agent może teraz zidentyfikować użytkownika i przeprowadzić testy autoryzacji. Ta przykładowa trasa interfejsu API wyodrębnia oświadczenia użytkowników z tokenu dostępu i zwraca je w odpowiedzi interfejsu 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();

Oświadczenia tokenu