Аутентификация в Microsoft Graph API с использованием PowerShell - PullRequest
0 голосов
/ 28 мая 2018

* Обновление - Хакерство сегодня днем, и я обнаружил, что пытался аутентифицироваться с использованием ADAL-аутентификации , когда мне нужно было использовать MSAL .Я изменил свой подход к использованию MSAL и добился успеха, но этот вопрос все еще означает аутентификацию ADAL.

У меня были трудности с возможностью аутентификации с помощью API графа с использованием powershell.Моя конечная цель - иметь возможность запрашивать некоторые из моих страниц OneNote, и я могу использовать Graph Explorer для аутентификации с использованием моей личной учетной записи Microsoft.

Я следил этот блог , и этот более новый один.

Я зарегистрировал свое приложение на https://apps.dev.microsoft.com, и у меня есть идентификатор приложения, который я подключил к сценарию PS как $clientID, и когда я запускаю сценарий, я получаю ошибку: Method invocation failed because [Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext] does not contain a method named 'AcquireToken'.

При просмотре .net документации для класса Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext нет метода с именем AcquireToken, но есть несколько с аналогичным именем, хотя яне могу понять, какой мне нужно использовать.В идеале я хотел бы, чтобы мой скрипт запрашивал у пользователя их учетные данные, аналогично тому, как работает функция Login-AzureRmAccount модуля AzureRM.Если это невозможно, я мог бы использовать руководство по переработке приведенного ниже кода для использования Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.AcquireTokenASync

function Get-AuthToken
{

     param
         (
         [Parameter(Mandatory=$true)]
         $TenantName
         )
     Import-Module Azure
     $clientId = "00d16af4-d0c7-460a-a9dc-fd350eb4b100" 
     $redirectUri = "urn:ietf:wg:oauth:2.0:oob"
     $resourceAppIdURI = "https://graph.microsoft.com"
     $authority = "https://login.microsoftonline.com/$TenantName"
     $authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority
$Credential = Get-Credential
     $AADCredential = New-Object   "Microsoft.IdentityModel.Clients.ActiveDirectory.UserCredential" -ArgumentList   $credential.UserName,$credential.Password
     $authResult = $authContext.AcquireToken($resourceAppIdURI, $clientId,$AADCredential)
     return $authResult

 }
 Get-AuthToken -TenantName "common"

1 Ответ

0 голосов
/ 29 мая 2018

Я полагаю, что для ADAL вы передадите значение из [Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior] в метод AcquireTokenASync в дополнение к clientID, URI перенаправления моих приложений и идентификатору ресурса "https://graph.microsoft.com". Этот код запрашивает у меняучетные данные, но поскольку я не использую Azure AD, я не могу пройти эту точку.

function Get-AuthToken{
    param([Parameter(Mandatory=$true)] $TenantName)

    $clientId = "00d16af4-d0c7-460a-a9dc-fd350eb4b100" 
    $redirectUri = "urn:ietf:wg:oauth:2.0:oob"
    $resourceAppIdURI = "https://graph.microsoft.com"
    $authority = "https://login.microsoftonline.com/$TenantName"
    $authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority
    $promptBehaviour = [Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::Auto
    $authParam = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters" -ArgumentList $promptBehaviour
    $authenticationTask = $authContext.AcquireTokenASync($resourceAppIdURI, $clientId,$redirectUri,$authParam)
    $authenticationTask.Wait()
    $authenticationResult = $authenticationTask.Result
    return $authResult
}

Get-AuthToken -TenantName "common" 

Для MSAL я обнаружил функцию Get-MSALToken модуля MSAL.PS модуля, которая подсказала мнеи вернул действительный токен, который я мог бы использовать.

Get-MSALToken -Scopes "Notes.Read" -ClientId "00d16af4-d0c7-460a-a9dc-fd350eb4b100" -RedirectUri "urn:ietf:wg:oauth:2.0:oob" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...