Azure ad b2c 如何实现客户端API访问受Azure AD B2C保护的资源

Azure ad b2c 如何实现客户端API访问受Azure AD B2C保护的资源,azure-ad-b2c,Azure Ad B2c,我目前有一个Angular SPA应用程序,它使用Azure B2c授权用户,并使用令牌传递给微服务以获取/设置所有功能 我现在想构建一个API,客户端可以使用它自己访问微服务(直接或通过Azure API管理) 我找不到任何关于这方面的好文档,但理想情况下,我希望用户能够在我们的应用程序中创建“应用程序”,为他们提供API密钥和机密,然后他们可以用这些来交换JWT令牌,并将其传递给微服务——理想情况下生成的Azure B2C,这样它就可以使用与我们现在所做的相同的身份验证。 将密钥/秘密转换为

我目前有一个Angular SPA应用程序,它使用Azure B2c授权用户,并使用令牌传递给微服务以获取/设置所有功能

我现在想构建一个API,客户端可以使用它自己访问微服务(直接或通过Azure API管理)

我找不到任何关于这方面的好文档,但理想情况下,我希望用户能够在我们的应用程序中创建“应用程序”,为他们提供API密钥和机密,然后他们可以用这些来交换JWT令牌,并将其传递给微服务——理想情况下生成的Azure B2C,这样它就可以使用与我们现在所做的相同的身份验证。 将密钥/秘密转换为令牌的API需要是非交互式的

Azure AD B2C现在支持ROPC,但这似乎并不合适,因为这将只使用用户用户名和密码,而我们不希望这样做(因为我希望用户能够撤销访问权)

我可以在Azure B2c外部构建这个系统-拥有自己的身份提供者,为API生成令牌,并在所有微服务上更改管道以拥有两个身份验证-一个用于Azure B2c令牌,一个用于自己的API身份验证,但希望有一个更精简的方法


有什么建议吗?

在这种情况下,您将按照以下方式进行设计:

  • 用户登录到您的门户。他们使用Azure AD B2C策略获取代币
  • 他们使用他们的访问令牌呼叫您的服务
  • 您的服务在您的Azure AD B2C目录中创建Azure AD应用程序注册
  • 它使用Azure AD Graph API实现这一点。您的API创建App Reg,生成所需的应用程序机密,并将AppId和机密返回给用户
  • 您还需要一个应用程序注册来表示微服务本身,并为其授予上述应用程序注册权限
  • 您的微服务需要信任2个令牌颁发者。Azure AD B2C目录中的Azure AD令牌颁发者和Azure AD B2C令牌颁发者
  • 现在,用户可以根据正常的Azure AD,针对您的Azure AD B2C目录使用客户端凭据流,并请求您的microservice App Reg的范围
  • 然后,他们使用新的令牌调用您的微服务
  • 如果您使用APIM或类似工具,则可以将它们配置为信任多个令牌颁发者


    总之,用户身份验证受B2C用户流/策略和B2C令牌颁发者的保护。基于API的访问受B2C租户的AAD端点保护。由于两种身份验证机制都共享微服务,因此需要信任两个令牌颁发者。

    谢谢Jas-我将在接下来的几天内尝试此功能,然后标记答案,或者如果有任何问题,请告知您!嗨,Jas,我刚刚开始研究这个问题——有了客户ID和客户机密,我如何知道这与哪个“用户”相关?实际上,我需要检查应用程序注册是否有权访问某个帐户。现在使用Azure B2c,当我登录用户时,我将AccountID添加到令牌(通过身份体验框架回调)这里根本没有关联,您必须保留一个记录。您可以尝试将B2C用户作为所有者添加到应用程序注册中,作为标记此注册的一种方式。你不能真的修改该令牌中的声明,因为它是由AAD发布的,而不是B2C。啊,那么它仅仅是为了验证-所以我们会跟踪app注册和有访问权限的帐户?