Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här artikeln får du lära dig hur du beviljar medgivande för en enskild användares räkning med hjälp av PowerShell.
När en användare beviljar sitt medgivande för sig själva inträffar följande händelser oftare:
Ett tjänsthuvudnamn för klientprogrammet skapas, om det inte redan finns. Ett huvudnamn för tjänsten är instansen av ett program eller en tjänst i din Microsoft Entra klientorganisation. Åtkomst som beviljas till appen eller tjänsten är kopplad till det här tjänstehuvudobjektet.
För varje API som programmet kräver åtkomst till skapas ett delegerat behörighetsbidrag till api:et för de behörigheter som programmet behöver. Åtkomsten beviljas för användarens räkning. Ett delegerat behörighetsbidrag ger ett program åtkomst till ett API för en användares räkning när användaren loggar in.
Användaren tilldelas klientprogrammet. Genom att tilldela programmet till användaren ser du till att programmet visas i Moje aplikácie-portalen för användaren. Användaren kan granska och återkalla den åtkomst som beviljats för deras räkning från Moje aplikácie portalen.
Förutsättningar
Ett användarkonto med rollen Privilegierad rolladministratör, programadministratör eller molnprogramadministratör.
Följande information från Microsoft Entra administrationscenter:
- App-ID:t för den app som du beviljar medgivande för. I den här artikeln kallar vi den för klientprogrammet.
- DE API-behörigheter som klientprogrammet kräver. Ta reda på app-ID:t för API:et och behörighets-ID:n eller anspråksvärdena.
- Användarnamnet eller objekt-ID:t för den användare för vars räkning åtkomst beviljas.
Bevilja medgivande för en enskild användares räkning
Exemplet i den här artikeln använder Microsoft Graph PowerShell för att bevilja medgivande för en enskild användares räkning. Klientprogrammet är Microsoft Graph Explorer och vi beviljar åtkomst till Microsoft Graph-API:et.
Om du vill bevilja medgivande till ett program åt en användare med hjälp av Microsoft Graph PowerShell måste du logga in som minst en Molnprogramadministratör.
# The app for which consent is being granted.
$clientAppId = "de8bc8b5-d9f9-48b1-a8ad-b748da725064" # Your client application
# The API to which access will be granted. Your client application 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 portal.")
} 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"
}
Logga in på Microsoft Graph Explorer som minst en Cloud Application Administrator för att bevilja medgivande till ett program för en användare som använder Microsoft Graph-API:et.
Du måste samtycka till följande behörigheter: Application.ReadWrite.All, Directory.ReadWrite.All, DelegatedPermissionGrant.ReadWrite.All.
I följande exempel beviljar du delegerade behörigheter som definierats av ett resurs-API till ett klientföretagsprogram för en enskild användares räkning. I exemplet:
- Resursföretagsapplikationen är Microsoft Graph med objekt-ID
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb. - Microsoft Graph definierar delegerade behörigheter,
User.Read.AllochGroup.Read.All. - ConsentType är
Principal, vilket anger att du ger samtycke på uppdrag av en enskild användare i hyresgästen. - Objekt-ID:t för klientföretagsprogrammet är
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb. - Användarens huvud-ID är
aaaaaaaa-bbbb-cccc-1111-222222222222.
Varning
Var försiktig! Behörigheter som beviljas programmatiskt kan inte granskas eller bekräftas. De träder i kraft omedelbart.
Hämta alla delegerade behörigheter som Microsoft Graph (resursprogrammet) definierar i klientprogrammet. Identifiera de behörigheter som du vill delegera till klientprogrammet. Delegeringsbehörigheterna i det här exemplet är
User.Read.AllochGroup.Read.All.GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=displayName eq 'Microsoft Graph'&$select=id,displayName,appId,oauth2PermissionScopesBevilja delegerade behörigheter till klientföretagets program för användarens räkning genom att köra följande begäran.
POST https://graph.microsoft.com/v1.0/oauth2PermissionGrants Request body { "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444", "consentType": "Principal", "resourceId": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1", "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222", "scope": "User.Read.All Group.Read.All" }Bekräfta att du har gett användaren medgivande genom att köra följande begäran.
GET https://graph.microsoft.com/v1.0/oauth2PermissionGrants?$filter=clientId eq '00001111-aaaa-2222-bbbb-3333cccc4444' and consentType eq 'Principal'Tilldela appen till användaren. Den här tilldelningen säkerställer att användaren kan logga in om tilldelning krävs. Det säkerställer också att appen är tillgänglig via användarens Moje aplikácie portal.
I följande exempel
resourceIdrepresenterar den klientapp som användaren tilldelas till. Användaren tilldelas standardapprollen (00000000-0000-0000-0000-000000000000).POST /servicePrincipals/resource-servicePrincipal-id/appRoleAssignedTo { "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222", "resourceId": "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1", "appRoleId": "00000000-0000-0000-0000-000000000000" }