使用托管服务身份支持代表流程

Posted

技术标签:

【中文标题】使用托管服务身份支持代表流程【英文标题】:Supporting the On-Behalf-of flow with managed service identities 【发布时间】:2018-02-24 03:26:39 【问题描述】:

在 Azure 和应用服务中运行的应用程序的一个非常常见的流程是代表流程,在该流程中,应用程序可以交换传入的访问令牌及其 ClientId/ClientSecret 以作为用户访问另一个资源。查看 MSI API 上当前有限的文档,我只看到获取访问令牌作为应用程序本身。

如何/何时支持 OBO 方案?

我知道您可以将 ClientId/ClientSecret 存储在 Key Vault 中,然后使用 MSI 凭据来检索这些凭据,但这似乎是多余的。

【问题讨论】:

你看到这个文件了吗?docs.microsoft.com/en-us/azure/active-directory/develop/… 嗨,韦恩,是的,我知道流程,但这确实需要应用程序的客户端 ID 和客户端密码才能执行。问题与获取和管理这些有关。必须使用 Key Vault 来存储它们似乎是多余且不必要的,以便应用程序可以检索它们并在 MSI 令牌端点也可以处理它们时使用它们。 @OrenNovotny IIUC,在 Step2 期间,将从 MSI 中检索 ClientId 和 Secret。 @JoeBrockhaus 如果这些可以通过 env 变量获得,那也可以。 【参考方案1】:

MSI 尚不支持 On Behalf Of 流,或使用 Azure AD 的其他委托机密客户端 OAuth 2.0 流(如身份验证代码流)。它正在设计过程中,尚未公布 ETA。

【讨论】:

有人知道这在过去 2 年内是否发生了变化吗? 它没有改变。然而。

以上是关于使用托管服务身份支持代表流程的主要内容,如果未能解决你的问题,请参考以下文章

使用 Cognito 进行 REST API 身份验证

使用 Azure 托管服务标识和应用服务身份验证的服务到服务身份验证?

身份验证如何在 Azure Functions 上工作

OAuth2.0协议流程

使用 Windows 身份验证的 IIS 托管 WCF 服务和 SQL 查询

如何使用窗口服务帐户使用窗口身份验证托管 asp.net 应用程序