Uwierzytelnianie i uzyskiwanie tokenów dla agentów autonomicznych

Agenci autonomiczni wykonują operacje przy użyciu własnej tożsamości, a nie działają jako pełnomocnik użytkownika. Aby bezpiecznie działać, agent autonomiczny musi uwierzytelniać się przy użyciu Microsoft Entra ID, uzyskiwać tokeny dostępu i mieć odpowiednie uprawnienia. Ten artykuł przeprowadzi Cię przez pełny przepływ:

  1. Konfigurowanie poświadczeń klienta.
  2. Zażądaj tokenu dla szablonu tożsamości agenta.
  3. Zażądaj tokenu tożsamości agenta.
  4. Udziel uprawnień aplikacji (zgoda administratora).
  5. (Opcjonalnie) Utwórz i uwierzytelnij się jako konto użytkownika agenta dla zasobów, które wymagają tożsamości użytkownika.

Uwaga / Notatka

W tym artykule omówiono agentów autonomicznych, którzy działają z własną tożsamością. Jeśli agent musi działać w imieniu zalogowanego użytkownika, zobacz Uwierzytelnianie użytkowników i uzyskiwanie tokenów dla agentów interaktywnych.

Wymagania wstępne

Przed zaimplementowaniem uwierzytelniania tokenu agenta upewnij się, że masz:

W przypadku autoryzacji administratora potrzebne są również następujące elementy:

  • Uprawnienia administratora w dzierżawcy Microsoft Entra ID.
  • Znajomość określonych uprawnień wymaganych przez agenta.

W przypadku uwierzytelniania konta użytkownika agenta potrzebne są również następujące elementy:

Konfigurowanie poświadczeń klienta

Pobierz szczegóły poświadczeń klienta. Może to być tajemnica klienta, certyfikat lub tożsamość zarządzana, której używasz jako poświadczenia dla tożsamości federacyjnej.

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.

Zbierz poświadczenia skonfigurowane w strategii tożsamości agenta. Potrzebujesz jednego z następujących elementów:

  • Zarządzana tożsamość (zalecane): identyfikator klienta tożsamości zarządzanej i token z usługi Azure Instance Metadata Service (IMDS).
  • Certyfikat: odcisk palca certyfikatu lub plik PFX.
  • Klucz tajny klienta (tylko do celów deweloperskich): wartość tajna.

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

Podczas żądania tokenu dla szablonu tożsamości agenta podaj identyfikator klienta tożsamości agenta w parametrze fmi_path (ścieżka Federated Managed Identity). Ten parametr informuje Microsoft Entra ID, w imieniu której tożsamości agenta działa szablon.

Podczas używania tajnego klienta w trakcie lokalnego tworzenia podaj parametr client_secret. W przypadku certyfikatów i tożsamości zarządzanych należy użyć polecenia client_assertion i client_assertion_type zamiast tego.

Użyj następującego żądania tokenu, aby uzyskać token dla strategii tożsamości agenta:

POST https://login.microsoftonline.com/<your-tenant-id>/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

client_id=<agent-blueprint-client-id>
&scope=api://AzureADTokenExchange/.default
&grant_type=client_credentials
&client_secret=<client-secret>
&fmi_path=<agent-identity-client-id>

Żądanie tokenu tożsamości agenta

Po uzyskaniu tokenu szkicu tożsamości agenta (T1), użyj go do żądania tokenu tożsamości agenta.

POST https://login.microsoftonline.com/<your-tenant-id>/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

client_id=<agent-identity-client-id>
&scope=https://graph.microsoft.com/.default
&grant_type=client_credentials
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=<agent-blueprint-token-T1>

Zezwalaj na uprawnienia aplikacji

Agenci często muszą podejmować działania w Microsoft Graph i innych usługach sieciowych, które wymagają uprawnień aplikacji Microsoft Entra ID (reprezentowanych jako role aplikacji). Agenci autonomiczni muszą zażądać tych uprawnień od administratora Microsoft Entra ID.

Istnieją dwa sposoby udzielania uprawnień aplikacji agentowi autonomicznemu:

  • Administrator może utworzyć appRoleAssignment przy użyciu interfejsów API Microsoft Graph lub programu PowerShell.
  • Agent może kierować administratora do strony zgody przy użyciu adresu URL zgody administratora.

Tworzenie przypisania roli aplikacji za pomocą interfejsów API

Aby uzyskać przypisanie roli aplikacji, wykonaj następujące kroki.

  1. Zażądaj tokenu tożsamości agenta z uprawnieniami Application.Read.All aplikacji i AppRoleAssignment.ReadWrite.All.

  2. Pobierz identyfikator obiektu jednostki usługi zasobów, do której próbujesz uzyskać dostęp. Aby przykładowo znaleźć identyfikator obiektu jednostki usługi Microsoft Graph:

    1. Przejdź do centrum administracyjne Microsoft Entra.
    2. Przejdź do Entra ID -->Enterprise Applications
    3. Filtruj według typu aplikacji == Microsoft Applications
    4. Wyszukaj Microsoft Graph.
  3. Uzyskaj unikatowy identyfikator roli aplikacji, którą chcesz przypisać, z dokumentacji uprawnień Microsoft Graph.

  4. Utwórz przypisanie roli aplikacji:

    POST https://graph.microsoft.com/v1.0/servicePrincipals/<agent-identity-id>/appRoleAssignments
    Authorization: Bearer <token>
    Content-Type: application/json
    
    {
      "principalId": "<agent-identity-id>",
      "resourceId": "<microsoft-graph-sp-object-id>",
      "appRoleId": "<app-role-id>"
    }
    

Żądanie autoryzacji od administratora dzierżawy

Aby udzielić uprawnień aplikacji, skonstruuj adres URL autoryzacji używany do monitowania administratora. Parametr roli służy do określania żądanych uprawnień aplikacji.

Pamiętaj, aby użyć identyfikatora klienta tożsamości agenta w poniższym żądaniu.

https://login.microsoftonline.com/contoso.onmicrosoft.com/v2.0/adminconsent
?client_id=<agent-identity-client-id>
&role=https://graph.microsoft.com/User.Read.All
&redirect_uri=https://entra.microsoft.com/TokenAuthorize
&state=xyz123

Implementacje agenta mogą przekierowywać administratora do tego adresu URL na różne sposoby, takie jak dołączenie go do wiadomości wysłanej do administratora w oknie czatu. Gdy administrator zostanie przekierowany do tego adresu URL, zostanie poproszony o zalogowanie się i wyrażenie zgody na uprawnienia określone w parametrze zakresu. Na ten moment musisz użyć wskazanego identyfikatora URI przekierowania, który kieruje administratora do pustej strony po udzieleniu zgody.

Uwaga / Notatka

Skonfiguruj adres URI przekierowania w blueprintcie i uwzględnij parametr state w żądaniu zgody. Po udzieleniu zgody użytkownik jest przekierowywany do adresu URI przekierowania, gdzie można wyświetlić potwierdzenie. Punkt końcowy może używać parametru state, aby śledzić fakt udzielenia uprawnienia. W przypadku agentów z jedną dzierżawą możesz też ponowić próbę żądania tokenu do momentu udzielenia zgody, ponieważ identyfikator dzierżawy jest już znany.

Po nadaniu szablonowi tożsamości agenta wymaganych uprawnień poproś o nowy token dostępu agenta, aby uprawnienia zaczęły obowiązywać.

Zaloguj się jako konto użytkownika agenta

Oprócz obsługi tokenów przeznaczonych wyłącznie dla aplikacji, agenci autonomiczni mogą uwierzytelniać się jako konto użytkownika danego agenta. Konta użytkowników agentów to specjalny typ konta użytkownika w Microsoft Entra specjalnie utworzony do użytku przez agentów. Są one najczęściej używane, gdy agent musi połączyć się z systemami, które wymagają istnienia konta użytkownika, na przykład skrzynki pocztowej, kanału usługi Teams lub innych zasobów specyficznych dla użytkownika.

Każda tożsamość agenta może mieć tylko jedno konto użytkownika skojarzonego agenta, a konto użytkownika każdego agenta może być skojarzone tylko z jedną tożsamością agenta.

Uzyskaj autoryzację na tworzenie kont użytkowników agentów

Aby utworzyć konta użytkowników agentów, szablon tożsamości agenta musi mieć uprawnienie AgentIdUser.ReadWrite.IdentityParentedBy aplikacji w ramach dzierżawy. Autoryzację można uzyskać na jeden z dwóch sposobów:

Jeśli chcesz użyć innego klienta, a nie szablonu tożsamości agenta, aby utworzyć konta użytkowników agentów, klient musi zamiast tego uzyskać AgentIdUser.ReadWrite.All uprawnienia delegowane lub aplikacyjne.

Tworzenie konta użytkownika agenta

Utwórz konto użytkownika agenta przy użyciu swojego szablonu tożsamości agenta lub innego zatwierdzonego klienta. Zalecanym sposobem utworzenia konta użytkownika agenta jest użycie schematu tożsamości agenta. Aby utworzyć konto użytkownika agenta, musisz uzyskać token dostępu przy użyciu strategii tożsamości agenta .

Po utworzeniu tokenu dostępu z niezbędnym uprawnieniem wykonaj następujące żądanie:

POST https://graph.microsoft.com/beta/users
OData-Version: 4.0
Content-Type: application/json
Authorization: Bearer <token>

{
  "@odata.type": "microsoft.graph.agentUser",
  "displayName": "New Agent User",
  "userPrincipalName": "agentuserupn@tenant.onmicrosoft.com",
  "identityParentId": "{agent-identity-id}",
  "mailNickname": "agentuserupn",
  "accountEnabled": true
}

Po utworzeniu konta użytkownika agenta nie musisz konfigurować żadnych innych elementów. Te konta nie mają żadnych poświadczeń i mogą być uwierzytelniane tylko przy użyciu protokołu opisanego w następnych sekcjach.

Konta agentów zachowują się jak każde inne konto użytkownika. Aby można było zażądać tokenów przy użyciu konta użytkownika agenta, musisz autoryzować tożsamość agenta do działania w jego imieniu. Autoryzację tożsamości agenta można uzyskać, wysyłając żądanie autoryzacji do administratora tenantu lub ręcznie tworząc element oAuth2PermissionGrant za pomocą Microsoft Graph lub Microsoft Graph PowerShell.

W przypadku Microsoft Graph żądanie jest jak pokazano w poniższym fragmencie kodu:

POST https://graph.microsoft.com/v1.0/oauth2PermissionGrants
Authorization: Bearer {token}
Content-Type: application/json

{
  "clientId": "{agent-identity-id}",
  "consentType": "Principal",
  "principalId": "{agent-id-user-object-id}",
  "resourceId": "{ms-graph-service-principal-object-id}",
  "scope": "Mail.Read"
}

W programie Microsoft Graph PowerShell użyj następującego skryptu:

Connect-MgGraph -Scopes "DelegatedPermissionGrant.ReadWrite.All" -TenantId <your-tenant-id>

# Get the service principal for Microsoft Graph
$graphSp = Get-MgServicePrincipal -Filter "appId eq '00000003-0000-0000-c000-000000000000'"

# Get the service principal for your client app
$clientSp = Get-MgServicePrincipal -Filter "appId eq '{agent-identity-id}'"

# Create the delegated permission grant
New-MgOauth2PermissionGrant -BodyParameter @{
    clientId    = $clientSp.Id
    consentType = "Principal"
    principalId = "{agent-id-user-object-id}"
    resourceId  = $graphSp.Id
    scope       = "Mail.Read"
}

Żądanie tokenu konta użytkownika agenta

Aby uwierzytelnić konto użytkownika agenta, należy wykonać trzyetapowy proces:

  1. Pobierz token jako szablon tożsamości agenta.
  2. Użyj tego tokenu, aby uzyskać inny token jako tożsamość agenta.
  3. Użyj obu poprzednich tokenów, aby uzyskać inny token jako konto użytkownika agenta.

Najpierw zażądaj tokenu jako strategii tożsamości agenta, zgodnie z opisem w temacie Żądanie tokenu dla strategii tożsamości agenta. Gdy masz już token planu tożsamości agenta, użyj tokenu planu tożsamości agenta, aby wystąpić o poświadczenie tożsamości federacyjnej (FIC) dla tożsamości agenta:

POST https://login.microsoftonline.com/<your-tenant-id>/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

client_id=<agent-identity-id>
&scope=api://AzureADTokenExchange/.default
&grant_type=client_credentials
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=<agent-blueprint-token>

To zwraca token wymiany (T2) dla tożsamości agenta. Użyj go w następnym żądaniu, aby uzyskać token delegowany dla konta użytkownika agenta:

POST https://login.microsoftonline.com/<your-tenant-id>/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

client_id=<agent-identity-id>
&scope=https://graph.microsoft.com/.default
&grant_type=user_fic
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=<agent-blueprint-token>
&user_id=<agent-user-object-id>
&user_federated_identity_credential=<agent-identity-token>

Zapewnia to delegowany token dostępu, którego można użyć do wywoływania Microsoft Graph jako konta użytkownika agenta. Możesz użyć user_id=<user-object-id> zamiast username=<UPN> identyfikatora użytkownika.