【问题标题】:Suggest OAuth flow(grant type) or approach for below requirement建议以下要求的 OAuth 流程(授权类型)或方法
【发布时间】:2018-11-07 23:25:33
【问题描述】:

CompanyA 正在与 CompanyB 集成,CompanyA 的用户将在其中购买 CompanyB 的设备。

CompanyA 希望通过调用在其应用上显示用户设备(CompanyB)的详细信息

CompanyB 在每个用户登录时的 API。

CompanyA 用户在 CompanyA IAM 上经过身份验证。

当用户第一次尝试添加设备时,CompanyA 必须调用注册设备。

帮助我确定仅可用于查询特定登录用户设备的流程。

我需要在 CompanyB 的 IAM 上创建重复的用户帐户吗?

如果我使用客户端凭据流进行 API 到 API 调用,CompanyB 提供的访问令牌仅提供 API 调用的访问权限,但它并不能说明仅代表正确的用户调用调用。

假设 CompanyA 使用 IdentityServer 或任何其他提供程序作为 IAM,而 CompanyB 使用 Azure AD B2C。

还有其他方法吗?

请看下图,

【问题讨论】:

  • 一个问题是,B 公司的服务如何知道 A 公司的用户与他们存档的用户是同一用户?
  • 感谢您的回复。第一次,他们必须调用 CompanyB 的 API 来注册设备。这会进行设备和用户映射。我将在帖子中更新这一点
  • 好的,CompanyB API 可以存储调用用户的对象 id 和租户 id 并将设备附加到它们。这样多租户 API 就可以工作了。
  • @juunas,谢谢。能否请您解释一下多租户 API 解决方案?

标签: oauth-2.0 azure-active-directory openid-connect azure-ad-b2c identity-experience-framework


【解决方案1】:

您应该能够通过在其 Azure AD 中将公司 B API 设为多租户来实现此目的。 当然还有其他选择,这只是我想到的第一个。

Overview of the multi-tenant pattern

您必须征得管理员同意才能在您的 Azure AD 租户中获取 API 的服务主体。 公司 B API 可以为您提供一个端点来执行此操作,使用适当的参数将您重定向到授权端点。 How to send a sign-in request

执行此操作后,您应该能够从租户中的公司 A API(在 Azure AD 中配置)请求对 API 的权限。 Configure a client application to access web APIs

完成这些操作后,您的 API 应该能够使用 On-Behalf-Of 授权流来获取 Company B API 的访问令牌。 Using Azure AD On-Behalf-Of flow in an ASP.NET Core 2.0 API

必须将公司 B API 配置为接受来自其他颁发者的访问令牌,而不是其 Azure AD。 在一般多租户场景中,颁发者验证通常被关闭。 如果 B 公司希望对此进行控制,目前他们必须明确列出有效的发行人。 颁发者值如下所示:https://sts.windows.net/31537af4-6d77-4bb9-a681-d2394888ea26/,GUID 是您的 Azure AD 租户 ID。

Company B API 可以从访问令牌中提取租户 id 和用户对象 id,并根据它们授权用户使用资源。

【讨论】:

  • 当 CompanyA 也将 Azure AD 用作 IAM 时,这可能是答案。在这种情况下,我们假设 CompanyA 使用不同的 IAM 提供程序,例如 Identityserver,CompanyB 使用 Azure AD B2C。如果方法独立于 CompanyA IAM 提供者工作,将会很有帮助。
【解决方案2】:

我在看 AWS 方面,看起来他们有一些可以满足要求的东西

https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html

想知道 Azure 中是否存在类似的东西。

【讨论】:

    猜你喜欢
    • 2019-04-21
    • 2014-11-04
    • 2016-10-15
    • 2016-05-23
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    相关资源
    最近更新 更多