Azure active directory 与Azure AD OAuth交互而不存储客户端机密

Azure active directory 与Azure AD OAuth交互而不存储客户端机密,azure-active-directory,Azure Active Directory,对于Azure Active Directory,我为我的web应用创建了一个应用注册,以便为最终用户启用SSO/OAuth 2.0登录,并使用AD graph API进行广告查找 这要求我使用客户机id和客户机密码,并且在Azure VM内部运行时,我不需要在系统上存储密码 有没有一种方法可以使用托管身份获取应用程序机密或生成可用于login.microsoftonline.com OAuth端点的令牌?当你说“Web App”时,我假设你使用的是与Azure应用程序服务类似的东西 如果问题在

对于Azure Active Directory,我为我的web应用创建了一个应用注册,以便为最终用户启用SSO/OAuth 2.0登录,并使用AD graph API进行广告查找

这要求我使用客户机id和客户机密码,并且在Azure VM内部运行时,我不需要在系统上存储密码

有没有一种方法可以使用托管身份获取应用程序机密或生成可用于login.microsoftonline.com OAuth端点的令牌?

当你说“Web App”时,我假设你使用的是与Azure应用程序服务类似的东西

如果问题在于在计算机上本地存储客户端机密,则更安全的方法是将机密存储在Azure KeyVault中

这篇stackoverflow文章讲述了KeyVault安全的原因:

官方文档提供了有关Azure Keyvault入门的良好概述/快速入门

这是一个关于在Azure Web应用程序中使用KeyVault的教程:

本质上,秘密保存在Azure中,因此它们永远不会在代码或开发机器上公开。通过使用MSI,您无需跟踪凭据即可访问keyvault。将所有重要信息保存在Azure中


感谢您抽出时间回答。在我的例子中,我使用的是Azure虚拟机,而不是应用程序服务,不过对于Keyvalut,我认为这并不重要。对于CosmosDB,您可以使用托管标识列出密钥,我想知道Azure AD的OAuth和Graph API是否也可以这样做。因此,如果您使用的是虚拟机,您可以使用VM系统分配的托管标识来访问keyvault,从而让您访问机密。clientid和secret以及您的交互式/非交互式登录过程将提供一个访问令牌,可用于访问MSFT Graph API,唯一重要的是您是否可以安全地从Azure AD获取访问令牌,然后,您将能够安全地访问其他资源,只要您拥有适当的权限并正确配置了AAD应用程序注册。