Ошибка 401 при попытке получить журнал аудита Office 365 с помощью MS Graph API с помощью PowerShell - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь получить журнал аудита для отслеживания изменений в распределении пользовательских лицензий.Это URI, который я использую в MS Graph Explorer.Там все работает нормально, я могу получить из него нужные данные.

https://graph.microsoft.com/beta/auditLogs/directoryAudits?$filter=activityDisplayName eq 'Update user'

Но когда я пытаюсь выполнить запрос с тем же URI через PowerShell с токеном аутентификации, сгенерированным с теми же учетными данными Office 365,Я получил сообщение о том, что Invoke-RestMethod : The remote server returned an error: (401) Unauthorized.

Я что-то пропустил с точки зрения получения токена аутентификации?Вот функция GetAuthToken, которую я использую

Function GetAuthToken
{
    param
        (
        [Parameter(Mandatory=$true)]
        $TenantName
        )
    Import-Module Azure
    $clientId = "ef9bcdf0-a675-4cd5-9ec3-fa549f9ee4cf" 
    $redirectUri      = "https://RedirectURI.com" 
    $resourceAppIdURI = "https://graph.microsoft.com"
    $authority = "https://login.microsoftonline.com/$TenantName"
    $authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority
    $Credential = Import-Clixml -Path "C:\MIMA\tom_admin_cred.xml"
    $AADCredential = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.UserCredential" -ArgumentList $credential.UserName,$credential.Password
    $authResult = $authContext.AcquireToken($resourceAppIdURI, $clientId,$AADCredential)
    return $authResult
}

И это код, который я использую для получения отчета

$token = GetAuthToken -TenantName $tenant  
$authHeader = @{
    'Content-Type'='application\json'
    'Authorization'=$token.CreateAuthorizationHeader()
    }
$uri = "https://graph.microsoft.com/beta/auditLogs/directoryAudits?$filter=activityDisplayName eq 'Update user'"
$auditReports = Invoke-RestMethod -Uri $uri –Headers $authHeader –Method Get

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Проблема исправлена!Проблема была вызвана тем, что приложению Azure AD не было предоставлено разрешение «Auditlog.Read.All».«Разрешение на изменение» в MSGraph Explorer почему-то не относится к фактическим настройкам разрешений Azure AD (или оно использует другое встроенное приложение Azure AD?).

Поэтому я должен войти на портал Azure -> Azure AD -> Регистрация приложения -> Настройки и добавлены разрешения в разделе «Необходимые разрешения».Обратите внимание, что изменение вступает в силу через некоторое время.Я просто ждал всю ночь, и на следующее утро я смог получить отчет без ошибки 401.

0 голосов
/ 04 октября 2018

Пожалуйста, попробуйте следующий код:

    $token = GetAuthToken -TenantName $tenant  
    $authHeader = @{
        'Content-Type'='application\json'
        'Authorization'=$token.CreateAuthorizationHeader()
        }
    $uri = "https://graph.microsoft.com/beta/auditLogs/directoryAudits?$filter=activityDisplayName eq 'Update user'"

   try{
        $auditReports = Invoke-RestMethod -Uri $uri –Headers $authHeader –Method Get
   }
   catch{
        $auditReports = $_.Exception.Response
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...