Минимальные разрешения, необходимые учетной записи serviceprincipal для перечисления информации профиля пользователя

какие разрешения необходимы субъекту-службе для перечисления информации профиля пользователя, например отдела, электронной почты и т. д.

Мне назначено следующее, но я получаю ошибку разрешения. если я назначу приложению роль администратора, оно будет работать. но мне неудобно добавлять эту роль в приложение.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
65
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Use.Read.All с Application Type достаточно, но не забудьте предоставить согласие администратора (появится зеленая точка). такой как:

Информация о пользователе department и email будет отображаться с помощью запроса на выбор. Если запрос на выбор отсутствует, информация об отделе будет скрыта.

Пример кода: с использованием Microsoft Graph Rest API

$tenantId           = ""
$clientId           = ""
$clientSecret       = ""

$headers = @{
    "Content-Type" = "application/x-www-form-urlencoded"
}

$uri = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token"

$body = @{
    grant_type    = "client_credentials"
    scope         = "https://graph.microsoft.com/.default"
    client_id     = $clientId
    client_secret = $clientSecret
}

$token = $(Invoke-RestMethod -Method Post -Uri $uri -Body $body -Headers $headers).access_token


$objectId = ""

$headers2 = @{
    "Content-Type" = "application/json"
    "Authorization" = "Bearer " + $token
}

$uri2 = "https://graph.microsoft.com/v1.0/users/{0}?`$select=displayName,givenName,mail,department" -f $objectId

$response = Invoke-RestMethod -Method Get -Uri $uri2 -Headers $headers2

$response

Результат испытаний:

Ответ принят как подходящий

Обратите внимание: подключение к модулю Azure AD PowerShell требует назначения роли читателей каталога (в вашем сценарии) для регистрации приложения, а также разрешений API. Обратитесь к этому блогу NoVestigeOfBeginning.

Без назначения ролей я получил ошибку «Недостаточно прав для завершения операции»:

Чтобы получить информацию профиля пользователя, предоставьте User.Read.All разрешение API приложения:

И добавим в приложение активное назначение роли читателей Справочника:

Я могу успешно получить профиль пользователя в соответствии с вашими требованиями:

# Define your tenant ID, application ID, and certificate thumbprint
$tenantId = "TenantID"
$applicationId = "APPID"
$certThumbprint = "CertTumbPrint"

# Connect to Azure AD using the certificate
Connect-AzureAD -CertificateThumbprint $certThumbprint -ApplicationId $applicationId -TenantId $tenantId

# Define the company name to filter by
$companyName = "ruk"

$users = Get-AzureADUser -All $true | Where-Object {
    $_.CompanyName -eq $companyName -and $_.JobTitle -ne $null
    } | Select-Object DisplayName, JobTitle, Mail, Department

# Export the filtered users to a CSV file
$users 

В противном случае используйте модуль Microsoft Graph PowerShell, поскольку модуль Azure AD PowerShell будет устаревшим:

  • Ниже приведены User.Read.All разрешения API типа приложения, предоставленные приложению.
  • Чтобы все заработало, добавлять какие-либо другие роли Microsoft Entra ID не нужно.
# Define your tenant ID, client ID, and certificate thumbprint
$tenantId     = "TenantID"
$clientId     = "ClientID"
$certThumbprint = "CertThumbprint"
$companyName  = "ruk"

# Connect to Microsoft Graph using client credentials and certificate
Connect-MgGraph -ClientId $clientId -TenantId $tenantId -CertificateThumbprint $certThumbprint

# Retrieve users with filtering and selecting specific properties
$filteredUsers = Get-MgUser -Filter "companyName eq '$companyName' and jobTitle ne null" `
                            -Select "displayName,jobTitle,mail,department" `
                            -CountVariable CountVar `
                            -ConsistencyLevel Eventual

# Output the filtered users
$filteredUsers | Format-Table -Property displayName, jobTitle, mail, department -AutoSize

  • Вы также можете использовать метод вызова rest, предложенный @wenbo.

Ссылка:

Используйте команды аутентификации Microsoft Graph PowerShell | Майкрософт

это работает. если я хочу экспортировать результаты, мне следует $filteredUsers | Export-Csv -Path "C:\temp\File.csv" -NoTypeInformation работает?

Asthika Welikala 05.08.2024 20:32

Другие вопросы по теме

Проблема с подтверждением связи Azure EventHub при автоматической настройке весенней загрузки
Как я могу получить всех пользователей из Azure Active Directory
Как устранить ошибку «недопустимое имя хоста для этой аренды» при доступе к API Microsoft Graph для регистрации мультитенантного приложения?
Интеграция единого входа с использованием MSAL в проекте Angular возвращает ошибку 401 после входа в систему
ASP.NET Azure AD/Аутентификация Entra — роли приложения в токене, но не назначаются субъекту
Расширение схемы Entra ID с пользовательским пространством имен
Azure — назначение участника сети в PIM
Получение свойства пользователя Azure «Дата последней локальной синхронизации» с помощью PowerShell
Можно ли получить доступ к конфигурации приложений Azure через URL-адрес или каким-либо образом подключиться к настройке среды службы приложений?
Не удалось войти в систему для пользователя «<участник, идентифицированный токеном>» при авторизации на SQL Server через субъект-службу из назначенной группы AAD