当前位置: 首页 > 知识库问答 >
问题:

为守护程序应用程序使用ADB2C进行Azure函数身份验证

杜思远
2023-03-14

我有一个Azure Function应用程序,运行在使用Azure AD B2C进行身份验证的高级计划中。简单SPA的用户通过广告B2C的登录流获得他们的代币。SPA在AD B2C中注册为应用程序,功能应用程序的身份验证配置为使用该应用程序注册:

身份验证/Azure Active Directory/高级

ClientId:<代码>

颁发者Url:<代码>https://

使用通过SPA获得的这些令牌对函数应用程序进行调用可以正常工作。

现在,我需要一个守护程序应用程序(目前是函数本身)来访问Function App,而无需用户执行登录。

为此,我尝试使用共享密钥获取令牌作为客户端凭据:

GET
https://login.microsoftonline.com/<B2C-Tenant-Id>/oauth2/v2.0/token?
grant_type=client_credentials
&client_id=<ClientId of the app registration>
&scope=https://<ADB2C-Tenant>.onmicrosoft.com/<ClientId of the app registration>/.default
&client_secret=<Secret of the app registration>

这将成功返回一个JWT令牌,但是使用它来验证对函数app的调用会导致401:您没有查看此目录或页面的权限

我怀疑这是由令牌的“假”颁发者引起的:<代码>https://login.microsoftonline.com/

我了解,Azure AD B2C目前不直接支持“OAuth 2.0客户端凭据授予流”,如这里所述。然而,该文件描述了一种“变通方法”,这是根据我的理解,基本上是我已经尝试过但没有成功的方法。

我如何才能使其正常工作并访问受Azure AD B2C保护的Azure功能应用程序以及守护程序应用程序?

共有2个答案

皇甫卓君
2023-03-14

仅供参考身份验证v2现在支持此功能-您可以添加多个身份提供者。

黄英韶
2023-03-14

正如@Jas Suri在评论部分所提到的,我们只能从门户设置一个发卡机构。您需要使用身份验证库来信任两个颁发者。

 类似资料: