Получить токен доступа к ресурсам Azure Active Directory из powershell для текущего пользователя? - PullRequest
0 голосов
/ 29 мая 2018

Есть ли способ получить токен на основе Azure Active Directory для определенного ресурса Azure (в моем случае - Insight Time Series), используя PowerShell?Не для какого-то принципа обслуживания, а для текущего пользователя.В .NET (c #), к настоящему моменту очень легко выполнимо использовать Идентификатор управляемой службы :

using Microsoft.Azure.Services.AppAuthentication;

var azureServiceTokenProvider = new AzureServiceTokenProvider();
string token = await azureServiceTokenProvider.GetAccessTokenAsync("https://api.timeseries.azure.com/");

Так что же это можно было бы сделать в PowerShell?Любой пример, который я видел до сих пор, всегда использует либо Принципы обслуживания, либо просто дает мне токены для API управления Azure для текущего пользователя.

1 Ответ

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

Если ваш сценарий PowerShell выполняется на компьютере, который присоединен к Active Directory в локальном домене, компьютер подключен к сети предприятия, а пользователь, выполняющий сценарий, является пользователем домена, синхронизированным с Azure Active Directory, тогда выможет использовать переопределение ADAL AcquireTokenAsync , которое использует встроенную проверку подлинности Windows.

В этом примере PowerShell получает токен для текущего пользователя для вызова Graph:

add-type -path "\Microsoft.IdentityModel.Clients.ActiveDirectory.3.13.4\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
$clientId = "1950a258-227b-4e31-a9cf-717495945fc2"
$resourceAppIdURI = "https://graph.windows.net"
$UserCredential = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.UserCredential" -ArgumentList "user@contoso.com"
$authority = "https://login.windows.net/TENANT.onmicrosoft.com" 
$authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority,$false
$authResult = [Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContextIntegratedAuthExtensions]::AcquireTokenAsync($authContext,$resourceAppIdURI,$clientId,$UserCredential).result

В этом примере идентификатор клиента - это известный GUID PowerShell, а ресурс - AADГрафик.Если вам нужно вызвать другой API (например, Time Series Insights), вам нужно зарегистрировать новое приложение (нативное приложение), которое представляет скрипт (вам нужно указать GUID этого нового приложения в скрипте, переменную $ clientId) идать ему делегированные разрешения на вызов API.Также убедитесь, что вы указали имя своего клиента в переменной $ author, а GUID или URI API - в переменной $ resourceAppIdURI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...