如何对由Azure AD B2C保护的资源实施客户端API访问

时间:2020-04-14 07:59:53

标签: azure-ad-b2c

我目前有一个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身份验证,但是希望有一种更简化的方法。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

在这种情况下,您将按以下步骤设计:

  1. 用户登录到您的门户。他们使用Azure AD B2C策略获取其令牌。
  2. 他们使用访问令牌来调用您的服务
  3. 您的服务在您的 Azure AD B2C 目录中创建 Azure AD 应用程序注册
  4. 它使用Azure AD Graph API进行此操作。您的API将创建App Reg,生成所需的Application Secret,并将AppId和Secret返回给用户
  5. 您还需要一个App Registration来表示微服务本身,并为其授予上述App Reg权限。
  6. 您的微服务需要信任2个令牌发行者。 Azure AD B2C目录中的Azure AD令牌发行者和Azure AD B2C令牌发行者
  7. 现在,用户可以针对您的Azure AD B2C目录,按照常规Azure AD使用客户端凭据流,并请求您的微服务应用程序注册的范围。
  8. 然后他们使用新令牌调用您的微服务

如果您使用API​​M或类似的东西,可以将它们配置为信任多个令牌发行者。

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