* Обновление - Хакерство сегодня днем, и я обнаружил, что пытался аутентифицироваться с использованием 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"