我目前有一个Angular SPA应用程序,该应用程序使用Azure B2c来授权用户,并使用令牌传递给微服务以获取/设置所有功能。
我现在想构建一个客户端可以用来直接(或直接通过Azure API管理)访问微服务的API。
我找不到与此相关的任何文档-但理想情况下,我希望用户能够在我们的应用程序中创建“应用程序”,从而为他们提供API密钥和密钥,然后他们可以使用这些密钥交换密钥它们可以传递给微服务的JWT令牌-理想情况下生成的Azure B2C,使其可以使用我们现在正在执行的相同身份验证。 将密钥/秘密转换为令牌的API必须是非交互式的。
Azure AD B2C现在支持ROPC,但似乎不合适,因为它将仅使用我们不希望的用户名和密码(因为我希望用户能够撤消访问权限)。 https://docs.microsoft.com/en-us/azure/active-directory-b2c/configure-ropc?tabs=applications
我可以将其全部构建到Azure B2c的外部-具有自己的身份提供程序,该提供程序为API生成令牌,并且在所有微服务上更改管道以进行两次身份验证-一个用于Azure B2c令牌,另一个用于自己的API身份验证,但是希望有一种更简化的方法。
有什么建议吗?
答案 0 :(得分:1)
在这种情况下,您将按以下步骤设计:
如果您使用APIM或类似的东西,可以将它们配置为信任多个令牌发行者。
总而言之,用户身份验证受B2C用户流/策略和B2C令牌发行者的保护。并且基于API的访问受B2C租户的AAD端点保护。由于微服务在两种身份验证机制之间共享,因此需要信任2个令牌发行者。