gpt4 book ai didi

powershell - 从 powershell 获取当前用户的 Azure Active Directory 资源访问 token ?

转载 作者:行者123 更新时间:2023-12-03 02:59:25 38 4
gpt4 key购买 nike

有没有办法使用 PowerShell 为特定 Azure 资源(在我的例子中是时间序列见解)获取基于 Azure Active Directory 的 token ?不是为了某种服务原则,而是为了当前用户。在 .NET (c#) 中,现在可以使用 Managed Service Identity 轻松实现这一点:

using Microsoft.Azure.Services.AppAuthentication;

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

那么这在 PowerShell 中也可行吗?到目前为止,我看到的任何示例都始终使用服务原则,或者只是为我提供当前用户的 Azure 管理 API 的 token 。

最佳答案

如果您的 PowerShell 脚本在加入 Active Directory 本地域的计算机上运行,​​该计算机连接到企业网络,并且运行该脚本的用户是同步到 Azure Active Directory 的域用户,那么您可以使用 ADAL AcquireTokenAsync 的覆盖它使用集成的 Windows 身份验证。

此 PowerShell 示例获取当前用户调用 Graph 的 token :

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 "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b4c1c7d1c6f4d7dbdac0dbc7db9ad7dbd9" rel="noreferrer noopener nofollow">[email protected]</a>"
$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

在示例中,客户端 ID 是众所周知的 PowerShell GUID,资源是 AAD Graph。如果您需要调用另一个 API(即时间序列见解),您将需要注册一个代表脚本的新应用程序( native 应用程序)(您需要在脚本中指定此新应用程序的 GUID、$clientId 变量)并且授予其调用 API 的委派权限。另请确保在 $authority 变量中指定您的租户名称,并在 $resourceAppIdURI 变量中指定 API GUID 或 URI。

关于powershell - 从 powershell 获取当前用户的 Azure Active Directory 资源访问 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50580808/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com