Hozzájárulás megadása egyetlen felhasználó nevében a PowerShell használatával
Ebben a cikkben megtudhatja, hogyan adhat hozzájárulást egyetlen felhasználó nevében a PowerShell használatával.
Amikor egy felhasználó hozzájárulást ad saját magának, a következő események gyakrabban fordulnak elő:
Létrejön egy szolgáltatásnév az ügyfélalkalmazáshoz, ha még nem létezik. A szolgáltatásnév egy alkalmazás vagy szolgáltatás példánya a Microsoft Entra-bérlőben. Az alkalmazásnak vagy szolgáltatásnak biztosított hozzáférés ehhez a szolgáltatásnév-objektumhoz van társítva.
Minden olyan API esetében, amelyhez az alkalmazás hozzáférést igényel, létrejön egy delegált engedély megadása az adott API-nak az alkalmazás által igényelt engedélyekhez. A hozzáférést a felhasználó nevében biztosítjuk. A delegált engedély megadása engedélyezi az alkalmazásnak, hogy egy felhasználó nevében hozzáférjen egy API-hoz, amikor a felhasználó bejelentkezik.
A felhasználóhoz hozzá van rendelve az ügyfélalkalmazás. Az alkalmazás felhasználóhoz rendelése biztosítja, hogy az alkalmazás szerepeljen az adott felhasználó Saját alkalmazások portálján. A felhasználó áttekintheti és visszavonhatja a nevükben megadott hozzáférést a Saját alkalmazások portálról.
Előfeltételek
Ahhoz, hogy egy alkalmazáshoz egy felhasználó nevében hozzájárulást adjon, a következőkre van szüksége:
- Globális Rendszergazda istrator, Alkalmazás Rendszergazda istrator vagy Felhőalapú alkalmazás Rendszergazda istrator felhasználói fiók
Hozzájárulás megadása egyetlen felhasználó nevében
Mielőtt hozzákezd, jegyezze fel a következő adatokat a Microsoft Entra felügyeleti központból:
- Annak az alkalmazásnak az alkalmazásazonosítója, amelyet ön hozzájárulással ad meg. A cikk alkalmazásában ügyfélalkalmazásnak nevezzük.
- Az ügyfélalkalmazás által igényelt API-engedélyek. Ismerje meg az API alkalmazásazonosítóját, valamint az engedélyazonosítókat vagy jogcímértékeket.
- Annak a felhasználónak a felhasználóneve vagy objektumazonosítója, akinek a nevében hozzáférést kap.
Ebben a példában a Microsoft Graph PowerShell használatával adunk hozzájárulást egyetlen felhasználó nevében. Az ügyfélalkalmazás a Microsoft Graph Explorer, és hozzáférést biztosítunk a Microsoft Graph API-hoz.
Ahhoz, hogy a Microsoft Graph PowerShell használatával egy felhasználó nevében hozzájárulást adjon egy alkalmazáshoz, be kell jelentkeznie legalább egy felhőalapú alkalmazásként Rendszergazda istratorként.
# The app for which consent is being granted. In this example, we're granting access
# to Microsoft Graph Explorer, an application published by Microsoft.
$clientAppId = "de8bc8b5-d9f9-48b1-a8ad-b748da725064" # Microsoft Graph Explorer
# The API to which access will be granted. Microsoft Graph Explorer makes API
# requests to the Microsoft Graph API, so we'll use that here.
$resourceAppId = "00000003-0000-0000-c000-000000000000" # Microsoft Graph API
# The permissions to grant. Here we're including "openid", "profile", "User.Read"
# and "offline_access" (for basic sign-in), as well as "User.ReadBasic.All" (for
# reading other users' basic profile).
$permissions = @("openid", "profile", "offline_access", "User.Read", "User.ReadBasic.All")
# The user on behalf of whom access will be granted. The app will be able to access
# the API on behalf of this user.
$userUpnOrId = "user@example.com"
# Step 0. Connect to Microsoft Graph PowerShell. We need User.ReadBasic.All to get
# users' IDs, Application.ReadWrite.All to list and create service principals,
# DelegatedPermissionGrant.ReadWrite.All to create delegated permission grants,
# and AppRoleAssignment.ReadWrite.All to assign an app role.
# WARNING: These are high-privilege permissions!
Connect-MgGraph -Scopes ("User.ReadBasic.All Application.ReadWrite.All " `
+ "DelegatedPermissionGrant.ReadWrite.All " `
+ "AppRoleAssignment.ReadWrite.All")
# Step 1. Check if a service principal exists for the client application.
# If one doesn't exist, create it.
$clientSp = Get-MgServicePrincipal -Filter "appId eq '$($clientAppId)'"
if (-not $clientSp) {
$clientSp = New-MgServicePrincipal -AppId $clientAppId
}
# Step 2. Create a delegated permission that grants the client app access to the
# API, on behalf of the user. (This example assumes that an existing delegated
# permission grant does not already exist, in which case it would be necessary
# to update the existing grant, rather than create a new one.)
$user = Get-MgUser -UserId $userUpnOrId
$resourceSp = Get-MgServicePrincipal -Filter "appId eq '$($resourceAppId)'"
$scopeToGrant = $permissions -join " "
$grant = New-MgOauth2PermissionGrant -ResourceId $resourceSp.Id `
-Scope $scopeToGrant `
-ClientId $clientSp.Id `
-ConsentType "Principal" `
-PrincipalId $user.Id
# Step 3. Assign the app to the user. This ensures that the user can sign in if assignment
# is required, and ensures that the app shows up under the user's My Apps portal.
if ($clientSp.AppRoles | ? { $_.AllowedMemberTypes -contains "User" }) {
Write-Warning ("A default app role assignment cannot be created because the " `
+ "client application exposes user-assignable app roles. You must " `
+ "assign the user a specific app role for the app to be listed " `
+ "in the user's My Apps access panel.")
} else {
# The app role ID 00000000-0000-0000-0000-000000000000 is the default app role
# indicating that the app is assigned to the user, but not for any specific
# app role.
$assignment = New-MgServicePrincipalAppRoleAssignedTo `
-ServicePrincipalId $clientSp.Id `
-ResourceId $clientSp.Id `
-PrincipalId $user.Id `
-AppRoleId "00000000-0000-0000-0000-000000000000"
}
Ha egy microsoft graph API-t használó felhasználó nevében szeretne hozzájárulást adni egy alkalmazáshoz, jelentkezzen be a Graph Explorerbe legalább egy felhőalapú alkalmazásként Rendszergazda istratorként.
A következő engedélyekhez kell hozzájárulnia:
Application.ReadWrite.All
, , Directory.ReadWrite.All
DelegatedPermissionGrant.ReadWrite.All
.
Az alábbi példában egy erőforrás API által definiált delegált engedélyeket ad meg egy vállalati ügyfélalkalmazásnak egyetlen felhasználó nevében.
A példában az erőforrás-nagyvállalati alkalmazás az objektumazonosító 7ea9e944-71ce-443d-811c-71e8047b557a
Microsoft Graphja. A Microsoft Graph határozza meg a delegált engedélyeket és User.Read.All
Group.Read.All
a . A consentType az Principal
, amely azt jelzi, hogy ön a bérlő egyetlen felhasználója nevében járul hozzá. Az ügyfél vállalati alkalmazás objektumazonosítója a következő b0d9b9e3-0ecf-4bfd-8dab-9273dd055a941
: . A felhasználó principalId azonosítója.3fbd929d-8c56-4462-851e-0eb9a7b3a2a5
Figyelem
Légy óvatos! A programozott módon megadott engedélyeket nem kell felülvizsgálni vagy megerősítést adni. Azonnal érvénybe lépnek.
Kérje le a Microsoft Graph (az erőforrásalkalmazás) által definiált összes delegált engedélyt a bérlői alkalmazásban. Azonosítsa azokat a delegált engedélyeket, amelyeket meg szeretne adni az ügyfélalkalmazásnak. Ebben a példában a delegálási engedélyek a következők:
User.Read.All
Group.Read.All
GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=displayName eq 'Microsoft Graph'&$select=id,displayName,appId,oauth2PermissionScopes
Adja meg a delegált engedélyeket az ügyfél vállalati alkalmazásának a felhasználó nevében az alábbi kérés futtatásával.
POST https://graph.microsoft.com/v1.0/oauth2PermissionGrants Request body { "clientId": "b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94", "consentType": "Principal", "resourceId": "7ea9e944-71ce-443d-811c-71e8047b557a", "principalId": "3fbd929d-8c56-4462-851e-0eb9a7b3a2a5", "scope": "User.Read.All Group.Read.All" }
Az alábbi kérés futtatásával győződjön meg arról, hogy hozzájárult a felhasználóhoz.
GET https://graph.microsoft.com/v1.0/oauth2PermissionGrants?$filter=clientId eq 'b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94' and consentType eq 'Principal'
Rendelje hozzá az alkalmazást a felhasználóhoz. Ez a hozzárendelés biztosítja, hogy a felhasználó bejelentkezhet, ha a hozzárendelés szükséges, és biztosítja, hogy az alkalmazás elérhető legyen a felhasználó Saját alkalmazások portálján keresztül. Az alábbi példában azt az ügyfélalkalmazást jelöli,
resourceId
amelyhez a felhasználó hozzá van rendelve. A felhasználóhoz az alapértelmezett alkalmazásszerepkör van00000000-0000-0000-0000-000000000000
hozzárendelve.POST /servicePrincipals/resource-servicePrincipal-id/appRoleAssignedTo { "principalId": "3fbd929d-8c56-4462-851e-0eb9a7b3a2a5", "resourceId": "b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94", "appRoleId": "00000000-0000-0000-0000-000000000000" }