0

我正在使用以下命令创建访问令牌:

Get-ADALAccessToken -AuthorityName exterrobiz.onmicrosoft.com -ClientId a0c73c16-a7e3-4564-9a95-2bdf47383716 -ResourceId https://ps.compliance.protection.outlook.com/PowerShell-LiveId -RedirectUri "urn:ietf:wg:oauth:2.0:oob" -ForcePromptSignIn

它将提供访问令牌。使用此令牌,我可以执行安全性和合规性操作。

收到的令牌有效期为 1 小时,我想在无需用户干预的情况下自动更新 accesstoken。我在上述结果中收到了刷新令牌和 ID 令牌(能够从缓存中读取)。如何使用可用的刷新令牌获取新的访问令牌?

我正在使用 Microsoft 提供的应用程序客户端 ID (a0c73c16-a7e3-4564-9a95-2bdf47383716),并且没有密钥可以命中端点以刷新访问令牌。

我无法获得实现这一目标的解决方案。

4

1 回答 1

0

此处的 Microsoft Docs 中描述了刷新流程:

对于 V1 端点:https ://docs.microsoft.com/en-us/azure/active-directory/develop/v1-protocols-oauth-code#refreshing-the-access-tokens

对于 V2 端点:https ://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow

这个链接解释了两者之间的区别:https ://docs.microsoft.com/en-us/azure/active-directory/develop/azure-ad-endpoint-comparison

看起来您用于 powershell cmdlet 的库来自这里:https ://www.powershellgallery.com/packages/Microsoft.ADAL.PowerShell/1.12

这首先是一个过时的库 (ADAL),它看起来甚至不是一个官方的 powershell 库。

目前没有关于利用 adal/msal 库在 powershell 环境中进行调用以获取访问令牌/ID 令牌/刷新令牌的官方文档。

如果您对此感兴趣,我建议将此作为对 Azure AD 反馈用户声音的反馈提交,如果有足够的社区支持,Microsoft 产品团队将考虑实施此操作:https ://feedback.azure.com/forums/169401-天蓝色活动目录

对于当前的修复,我建议查看 Shawntabrizi 的 MSAL/ADAL git repos。可以在此处找到 MSAL 存储库:

MSAL:https ://github.com/shawntabrizi/Microsoft-Authentication-with-PowerShell-and-MSAL

ADAL:https ://github.com/shawntabrizi/Azure-AD-Authentication-with-PowerShell-and-ADAL

如果您正在寻找专门用于刷新访问令牌的 powershell cmdlet,它将是 MSAL 库中的 acquiretokensilentasync 调用。这在此处进一步描述:

MSAL Wiki:https ://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/AcquireTokenSilentAsync-using-a-cached-token

ADAL 维基:https ://github.com/AzureAD/azure-activedirectory-library-for-dotnet/wiki/AcquireTokenSilentAsync-using-a-cached-token

于 2019-12-28T04:44:58.467 回答