gpt4 book ai didi

azure - 在Azure中使用AAD和AAD B2C实现授权,这种架构合理吗?

转载 作者:行者123 更新时间:2023-12-03 02:02:24 25 4
gpt4 key购买 nike

我的任务是构建一个 Multi-Tenancy 产品平台,但我很难决定应该如何实现身份验证和授权。我主要对 AAD 功能和最佳实践感到困惑。该项目不是一个大型企业,而是一个小型绿地项目。我正在寻找有关身份验证和授权架构的问题的答案和反馈。

我有一些要求需要满足:
R1。无本地用户,所有用户都属于外部公司,应使用其当前的 IdP(Google、Microsoft 帐户)进行身份验证。
R2。良好的安全实践。 (零信任和细粒度访问管理RBAC)

enter image description here因此,我目前的理解是,为了实现上述云资源之间的安全通信,我应该利用上图中的“我的公司 AAD”发布的托管身份(系统分配)。

问题/陈述:

  1. 为了在不需要存储数据的情况下对用户进行身份验证,我认为我应该使用 AAD B2C。在此 AAD B2C 中,我将添加一个类似于“MyCompanyB2C”的新租户,并且我不应该在 AAD B2C 中为我们签署的每个新客户添加新租户,对吗?
  2. 我是否需要与外部 IdP 联合才能使企业帐户能够登录?
  3. 我是否在 AAD B2C 中定义 RBAC 的自定义范围? (例如,“具有声明范围:“users/read”的用户可以读取用户数据”)。
  4. 即使我的客户可以使用不同的 IdP,我的 AAD B2C 访问 token 是否会共享统一格式? (也就是说,我的应用程序可以有一个统一的授权方法吗?我不必在我的应用程序授权中支持“Google 访问 token 和 Microsoft 访问 token ”)。
  5. 为了不向具有所有下游依赖项所需的所有范围的用户颁发“全能访问 token ”,服务应仅使用为具有依赖服务范围的微服务颁发的 token 相互调用。如果我们已经在资源之间实现了托管身份,这是否有必要?
  6. “AAD B2C”是负责颁发 OIDC 访问 token 的授权/身份验证服务器吗?

引用文献:
Apply the verify explicitly Zero Trust principle to your API implementation

最佳答案

我将根据标准 OAuth 设计模式回答这个问题:

A1

AAD B2C 是一个授权服务器 (AS),这就是您需要的角色。它属于您并保护您的数据。它可以通过多种方式对用户进行身份验证,包括外部 IDP,例如 Google。外部登录后,通常会在AS中创建用户记录。

登录后,您将使用包含主题声明的访问 token 调用 API。那么是否需要针对用户存储业务资源呢?例如购买的产品?如果是这样,您需要一个稳定的主题声明 - 值得更多地考虑。

A2

AS 可以与企业 IDP(如果提供)联合。如果企业选择不提供,您可以为他们提供一种由AS管理的默认登录方式,例如密码。这将在 AS 中存储用户记录。

A3

是的 - 自定义范围和声明是在 AS 中定义的,您可以在其中控制它们。颁发它们是为了访问 token ,您可以在 API 中使用它们来控制访问。在您的情况下,您可能需要 tenant_id 声明,因此您需要考虑如何将租户分配给用户。

A4

是的 - 这是使用 AS 的关键点。您的应用程序运行到 AS 的代码流,AS 接收外部 token ,然后向您的应用程序颁发 AS token 。

A5

管理同一所有者的微服务的最佳方法通常是在它们之间转发访问 token 。这以可审核的方式传递用户身份,并在每个 API 中启用基于用户的授权。它应该与 API 中范围和声明的良好使用以及将范围分配给客户端相结合。例如,如果给客户端指定范围订单运输,则其访问 token 在发送到支付 API 时将被拒绝。

A6

是的 - 如上所述。

关于azure - 在Azure中使用AAD和AAD B2C实现授权,这种架构合理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75721223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com