【问题标题】:Interacting with Azure AD OAuth without storing the client secret在不存储客户端密码的情况下与 Azure AD OAuth 交互
【发布时间】:2019-06-14 20:18:47
【问题描述】:

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

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

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

【问题讨论】:

    标签: azure-active-directory


    【解决方案1】:

    当您说“Web 应用程序”时,我假设您正在使用类似于 Azure 应用程序服务的东西,

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

    这篇 stackoverflow 帖子讨论了为什么 KeyVault 是安全的:Why is Azure Key Vault secure?

    官方文档提供了有关开始使用 Azure Keyvault 的良好概述/快速入门。 https://docs.microsoft.com/en-us/azure/key-vault/quick-create-portal

    这是一个在 Azure Web 应用中使用 KeyVault 的教程:https://docs.microsoft.com/en-us/azure/key-vault/tutorial-net-create-vault-azure-web-app

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

    【讨论】:

    • 感谢您花时间回答。就我而言,我使用的是 Azure VM 而不是应用服务,但对于 Keyvalut,我认为这无关紧要。对于 CosmosDB,您可以使用托管标识列出密钥,我想知道这是否也适用于 Azure AD 的 OAuth 和 Graph api。
    • 因此,如果您使用的是虚拟机,则可以使用 VM 系统分配的托管标识来访问密钥库,进而让您访问机密。 clientid 和 secret 以及您的交互式/非交互式登录过程将提供可用于访问 MSFT Graph API 的访问令牌,唯一重要的是您是否可以安全地从 Azure AD 获取访问令牌,然后您只要您拥有适当的权限并正确配置了 AAD 应用注册,就可以安全地访问其他资源。
    猜你喜欢
    • 1970-01-01
    • 2018-04-25
    • 2019-10-17
    • 2019-05-29
    • 2021-12-03
    • 2019-05-17
    • 1970-01-01
    • 2019-08-12
    • 2020-01-10
    相关资源
    最近更新 更多