【问题标题】:Azure Functions - Call a Secured Webserver API from an Azure FunctionAzure Functions - 从 Azure 函数调用安全 Web 服务器 API
【发布时间】:2020-01-15 15:06:29
【问题描述】:

如果我想调用需要来自 Azure Active Directory B2C 租户授权的 API,我将如何授权来自基于触发器发生的 Azure 函数的请求?

由于函数基于触发器调用 API,因此没有用户交互,并且发生在后台。所以我会假设需要发送一个不记名令牌?

如果需要任何其他信息,请告诉我。

【问题讨论】:

    标签: .net azure azure-functions


    【解决方案1】:

    正如您所暗示的,您首先需要从 AAD B2C 获取访问令牌,然后使用该令牌访问您的 API。我建议您参考 MS Docs 从 AAD B2C 获取访问令牌,它非常详细,应该是您需要的:

    https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-access-tokens#request-a-token

    然后将该访问令牌添加到您的身份验证标头(使用 HttpClient)并调用您的 API。确实没有任何特定于/依赖于 Azure Function 的事情需要担心。

    【讨论】:

    • 感谢您的评论。我对以这种方式请求令牌的担忧是,它似乎取决于用户以交互方式登录他们的帐户。但由于没有用户与 Azure Function 交互,因此没有用户能够登录该帐户。
    • 对不起,我在这种情况下实际上是错的。我假设 B2C 支持客户端凭据流,但快速搜索显示它不直接支持它。查看docs.microsoft.com/en-us/azure/active-directory-b2c/…,您将看到 MS 建议的解决方法。如果您需要委托的用户身份(作为特定用户),这将无济于事。如果您需要,那么我认为您无法在 Azure 函数(非交互式流程)中实现这一点。
    【解决方案2】:

    将您的 B2C 租户视为常规 AAD,即通过常规 AAD 刀片查看它并以这种方式配置标准客户端凭据 OAuth2 流。这是可能的。只有通过 B2C 刀片注册的应用程序不支持客户端信用。查看示例here 以了解它是如何完成的。

    【讨论】:

      【解决方案3】:

      这是代码示例。它展示了如何使用 Microsoft 身份平台在非交互式过程中从受保护的 Web API 访问数据:

      https://github.com/Azure-Samples/active-directory-dotnetcore-daemon-v2/tree/master/2-Call-OwnApi

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-14
        • 2021-04-07
        • 1970-01-01
        • 2019-11-24
        • 1970-01-01
        • 2018-05-04
        相关资源
        最近更新 更多