Azure AD B2C自定义策略与Web API正确设计的集成

ztyzrc3y  于 2023-11-21  发布在  其他
关注(0)|答案(1)|浏览(125)

在遵循了准备您的环境和定制策略的其他先决条件之后,我遇到了如何设计B2C应用程序注册的困难。

要求

  • 用户使用B2C自定义策略登录到单页应用程序(SPA)并获得令牌,该令牌赠款他们访问安全Web API(Azure应用服务)的权限。
  • 在一些B2C自定义策略中,某些RESTfulTechnicalProfile也需要安全地访问上述Web API。假设原因是验证某些数据。
    **我现在注册的应用程序 (名称不全是真实的)
  • 身份体验框架
  • ProxyIdentityExperienceFramework
  • SPA
  • WebAPI
    设置
    *IdentityExperienceFrameworkProxyIdentityExperienceFramework应用的配置与文档中描述的完全相同。
    *SPA应用程序用于自定义策略(登录、注册等)。
    *WebAPI应用公开SPA作为委托权限添加的作用域。它还包含Web API需要的其他Graph API权限。
  • .NET 6 Web API需要使用Web API应用程序进行身份验证。
    问题

对于RESTful TechnicalProfile,我的想法是在WebAPIapp中生成一个客户端密钥,并使用它在我的自定义策略中获得一个bearer token。该token可以用于与web API进行安全通信。这是正确和安全的方式吗?我是否应该以某种方式使用IdentityExperienceFramework?您对整体设计有何评论?
在做了很多小时的研究之后,我对如何设计这个有很多困难,所以我决定发布我的第一个stackoverflow问题!

qgelzfjb

qgelzfjb1#

对于RESTful技术配置文件,您希望B2C以类似于SPA的方式进行操作,它需要生成一个JWT并将其传递给API,但有一个关键区别-B2C令牌没有授权用户。
您需要做的第一件事是在您的API应用注册上创建应用权限,类似于您迄今为止创建的委派权限。这是因为在没有用户存在的情况下生成的任何令牌只能使用 application 权限,而不是有用户存在的应用可用的 delegated 权限。
然后,您需要设置一个代表B2C的应用程序注册。我通常会设置一个单独的应用程序注册,但我认为如果您愿意,您可以重用IdentityExperienceFramework应用程序。
您希望在该应用上设置客户端密码,然后将权限从API应用注册分配到B2C应用注册,类似于您为SPA应用所做的操作。
完成此操作后,您可以从B2C发出client_credentials请求以生成access_token,并将其传递给您的API,方法与在应用中传递用户的access_token相同。您可以通过创建请求令牌的技术配置文件,然后更新API技术配置文件以使用该令牌来完成此操作。

相关问题