Получение названия должности, отдела и идентификатора менеджера из Azure AD в заявках

Я использую приложение Azure AD с Azure B2c. Согласно официальному документу Microsoft, мы можем получать дополнительные претензии с помощью политики Azure AD. https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-claims-mapping.

При таком подходе мне удалось получить JobTitle, однако поля «Отдел» и «Мобильный телефон» всегда пусты. Ниже приведен сценарий PowerShell, который я использую для создания политики сопоставления утверждений AD.

$claimsMappingPolicy = [ordered]@{
    "ClaimsMappingPolicy" = [ordered]@{
        "Version" = 1
        "IncludeBasicClaimSet" = $true
        "ClaimsSchema" = @(
            [ordered]@{
                "Source" = "user"
                "ID" = "JobTitle"
                "JwtClaimType" = "JobTitle"
            },
             [ordered]@{
                "Source" = "user"
                "ID" = "Department"
                "JwtClaimType" = "Department"
            },
             [ordered]@{
                "Source" = "user"
                "ID" = "MobilePhone"
                "JwtClaimType" = "MobilePhone"
            }
        )
    }
}


$appID = "Azure AD App ID" 
$policyName = "ClaimsMappingPolicy"

$sp = Get-AzureADServicePrincipal -Filter "servicePrincipalNames/any(n: n eq '$appID')"
 
$existingPolicies = Get-AzureADServicePrincipalPolicy -Id $sp.ObjectId `
                    | Where-Object { $_.Type -eq "ClaimsMappingPolicy" }
if ($existingPolicies) {
    $existingPolicies | Remove-AzureADPolicy
}
 
$policyDefinition = $claimsMappingPolicy | ConvertTo-Json -Depth 99 -Compress
$policy = New-AzureADPolicy -Type "ClaimsMappingPolicy" -DisplayName $policyName -Definition $policyDefinition
 
Add-AzureADServicePrincipalPolicy -Id $sp.ObjectId -RefObjectId $policy.Id
Write-Output ("New claims mapping policy '{0}' set for app '{1}'." -f $policy.DisplayName, $sp.DisplayName)

person Gaurang Patel    schedule 15.07.2020    source источник
comment
Вы хотите получить JobInfo (jobTitle, отдел, идентификатор менеджера) пользователя? Перейдите к Azure Active Directory- ›Пользователи-› Информация о вакансии на портале.   -  person Pamela Peng    schedule 15.07.2020
comment
Сообщите нам, был ли вам полезен один из приведенных ниже ответов. Если да, не забудьте пометить его как ответ с помощью галочки, чтобы другим участникам сообщества, задавшим подобные вопросы, было легче найти решение. Кроме того, пожалуйста, уделите несколько минут, чтобы сообщить нам, как мы справились с использованием этой ссылки ‹microsoft.qualtrics.com/jfe/form/  -  person Nishant    schedule 06.08.2020


Ответы (2)


MobilePhone недоступен в качестве необязательного требования или через Политика сопоставления заявок. JobTitle и Department . Для токенов доступа убедитесь, что вы нацелены на собственное приложение как на ресурс. НАПРИМЕР:

https://login.microsoftonline.com/{tenant}/oauth2/authorize?client_id={app id}&resource={app id}

Or

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?client_id={app id}&scope={app id}/.default

person Alfredo R    schedule 15.07.2020

Сначала вам нужно получить токен доступа, а затем вызвать MS Graph API. Вы можете выполнить этот запрос.

# login
Connect-AzAccount

# get accessToken
$resource = "https://graph.microsoft.com"
$context = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile.DefaultContext
$accessToken = [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate($context.Account, $context.Environment, $context.Tenant.Id.ToString(), $null, [Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never, $null, $resource).AccessToken

# URL of request REST API
$user_id = "{id | userPrincipalName}"
$manager_uri = "https://graph.microsoft.com/v1.0/users/" + $user_id + "/manager"
$other_uri = "https://graph.microsoft.com/v1.0/users/" + $user_id + "?$select=displayName,jobTitle,department,mobilePhone"

# get user's manager
Invoke-RestMethod -Method 'Get' -Uri $manager_uri -Headers @{ Authorization = "Bearer " + $accessToken }

# get displayName,jobTitle,department
Invoke-RestMethod -Method 'Get' -Uri $other_uri -Headers @{ Authorization = "Bearer " + $accessToken }

Вы получите информацию от Azure Active Directory- ›Пользователи на портале.

введите описание изображения здесь


Кроме того, вы можете проверить ответ в https://developer.microsoft.com/en-us/graph/graph-explorer.

https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/manager
https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}?$select=displayName,jobTitle,department,mobilePhone
person Pamela Peng    schedule 30.07.2020