在遵循了准备您的环境和定制策略的其他先决条件之后,我遇到了如何设计B2C应用程序注册的困难。
要求
- 用户使用B2C自定义策略登录到单页应用程序(SPA)并获得令牌,该令牌赠款他们访问安全Web API(Azure应用服务)的权限。
- 在一些B2C自定义策略中,某些RESTful
TechnicalProfile
也需要安全地访问上述Web API。假设原因是验证某些数据。
**我现在注册的应用程序 (名称不全是真实的) - 身份体验框架
- ProxyIdentityExperienceFramework
- SPA
- WebAPI
设置
*IdentityExperienceFramework和ProxyIdentityExperienceFramework应用的配置与文档中描述的完全相同。
*SPA应用程序用于自定义策略(登录、注册等)。
*WebAPI应用公开SPA作为委托权限添加的作用域。它还包含Web API需要的其他Graph API权限。 - .NET 6 Web API需要使用Web API应用程序进行身份验证。
问题
对于RESTful TechnicalProfile
,我的想法是在WebAPIapp中生成一个客户端密钥,并使用它在我的自定义策略中获得一个bearer token。该token可以用于与web API进行安全通信。这是正确和安全的方式吗?我是否应该以某种方式使用IdentityExperienceFramework?您对整体设计有何评论?
在做了很多小时的研究之后,我对如何设计这个有很多困难,所以我决定发布我的第一个stackoverflow问题!
1条答案
按热度按时间qgelzfjb1#
对于RESTful技术配置文件,您希望B2C以类似于SPA的方式进行操作,它需要生成一个JWT并将其传递给API,但有一个关键区别-B2C令牌没有授权用户。
您需要做的第一件事是在您的API应用注册上创建应用权限,类似于您迄今为止创建的委派权限。这是因为在没有用户存在的情况下生成的任何令牌只能使用 application 权限,而不是有用户存在的应用可用的 delegated 权限。
然后,您需要设置一个代表B2C的应用程序注册。我通常会设置一个单独的应用程序注册,但我认为如果您愿意,您可以重用IdentityExperienceFramework应用程序。
您希望在该应用上设置客户端密码,然后将权限从API应用注册分配到B2C应用注册,类似于您为SPA应用所做的操作。
完成此操作后,您可以从B2C发出
client_credentials
请求以生成access_token
,并将其传递给您的API,方法与在应用中传递用户的access_token
相同。您可以通过创建请求令牌的技术配置文件,然后更新API技术配置文件以使用该令牌来完成此操作。