在 Postman 中为受 Azure AD B2C 保护的 Azure Function App 请求访问令牌

Posted

技术标签:

【中文标题】在 Postman 中为受 Azure AD B2C 保护的 Azure Function App 请求访问令牌【英文标题】:Request Access Token in Postman for Azure Function App protected by Azure AD B2C 【发布时间】:2018-08-24 13:07:02 【问题描述】:

我有一个由 Azure Active Directory B2C 租户保护的 AspNetCore 2.0 MVC Web API。通过遵循此 SO 发布,我已经能够使用 Postman 来测试 API 端点:Request Access Token in Postman for Azure AD B2C(特别是在 SpottedMahn 的 cmets 中引用的 Microsoft 记录的步骤: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/azure-ad-b2c-webapi#use-postman-to-get-a-token-and-test-the-api)

现在,我正在开发上述的无服务器版本 - 该应用程序几乎相同,但端点已由 Azure Functions 应用程序中的 Azure 函数实现

Functions App 已启用身份验证,使用 Azure Active Directory 登录并进行以下设置:

这就是我在 Azure B2C 租户中设置应用程序的方式:

如果我通过浏览器访问函数端点,我会成功路由到 Azure AD B2C 登录页面并可以登录,然后从 API 端点查看结果。所以我很有信心一切都很好。 Azure AD B2C Function App 配置。

但是,我不能使用上面链接的请求访问令牌技术来获取令牌并检查 Postman 中的端点

如果我获取身份验证后获得的令牌(例如,通过使用 fiddler 并观察返回的 id_token),并在 Postman 中选择承载身份验证并提供该 id_token,则 Postman 成功命中我的端点。但是,如果我按照上面链接文档中的步骤操作,我会得到“登录”弹出窗口,然后会得到一个有效的 [正在查看] 令牌,但是当我单击使用令牌并运行请求时,我会得到 ​​p>

您无权查看此目录或页面。

我真的很希望能够像使用我的 aspnetcore 2.0 应用程序一样向邮递员请求访问令牌(真的只是为了保持一致性,所以我不必记住很多不同的技术)。 Azure Function Apps 是否有可能,如果可以,是否有任何线索表明我在上面做错了什么?

【问题讨论】:

【参考方案1】:

啊,我偶然发现了它。我通过添加 Postman API 客户端 ID 来修复它(注意:邮递员 API 客户端 ID,而不是邮递员 App 客户端 ID)[这些引用在上面链接的 Microsoft 操作方法],在“允许的令牌受众”下(在上面有问题的屏幕截图中可见)。

【讨论】:

以上是关于在 Postman 中为受 Azure AD B2C 保护的 Azure Function App 请求访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

Azure AD 与 Azure AD B2C 与 Azure AD B2B

Azure AD B2C:注销社交帐户(使用 OIDC 的 Azure AD)

Azure AD B2C 与企业 (Azure?) AD 帐户集成

Azure AD B2C 租户和普通 Azure AD 租户有啥区别?

如何使用 Postman 获取 Azure AD 刷新令牌?

Azure AD B2C 密码重置