Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ą:
- Klient uzyskuje token dostępu związany z planem tożsamości agenta.
- Zweryfikuj ten token w interfejsie API agenta.
- 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.
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=abc123Po 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 clientOdpowiedź 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.
Microsoft.Identity.WebZainstaluj pakiet NuGet:dotnet add package Microsoft.Identity.WebW 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();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();