同一应用程序套件中的应用程序访问
Application to Application access within the same suite of applications
假设我的公司提供 2 个应用程序,比如 Mail 和 Calendar。
两个应用程序都使用 OAuth 2 来保护访问。
现在日历要访问邮件中的数据。如果这些是来自两个不同供应商的应用程序,日历自然会要求用户授权它访问邮件等。
但由于应用程序来自同一来源,我希望它们能够共享数据而无需用户明确授予权限。
或者换句话说:我有 ID/Access/Refresh 个日历令牌。如何在不打扰用户的情况下将它们换成邮件访问令牌?
如何在 OAuth 2 中完成此操作?我控制应用程序和身份提供者。
我想到的唯一解决方案是让邮件和日历成为同一个应用程序,但这似乎不对(还有其他问题,例如,如果您想限制某人访问其中一个应用程序).我也可以在 OAuth 2 之外实现特殊访问,但情况更糟。
Gmail 和 Google 日历就是一个真实的例子。它们都向外界提供 OAuth 2 接口,但您不必让它们相互交谈。
PS。参考白皮书或案例研究将不胜感激
分离的客户
默认情况下,在 OAuth 中,您会注册多个客户端,这些客户端会获得自己的令牌。然后,您将在第一次在它们之间导航时使用单点登录:
Client ID: app1
Scope: openid scope1
Redirect URI: https://app1.mycompany.com
Client ID: app2
Scope: openid scope2
Redirect URI: https://app2.mycompany.com
如果涉及用户同意,用户可以通过这种方式授予对其个人资产访问权限的更多选择。
联合客户
您可以像这样将这些组合成一个条目。请注意,为了使令牌/cookie 存储正常工作,通常有一个单一基域的托管先决条件:
Client ID: combinedapp
Scope: openid scope1 scope2
Redirect URIs: [https://app1.mycompany.com https://app2.mycompany.com]
优缺点
第一个选项在大多数情况下是最干净的,因为您可以避免访问过多数据的令牌。第二个选项对于相关的微用户界面有意义,它们实际上是具有相同权限的单个应用程序。
APIs 和范围
为了跨应用程序共享数据,公司构建了 API 个端点。然后,您可以拥有多个应用程序,每个应用程序使用代表多个业务领域的范围。请参阅 Scope Best Practices 文章作为设计授权的起点。例如,用户使用范围 openid calendar mail
登录日历应用程序 - 因此也可以获得邮件数据。
假设我的公司提供 2 个应用程序,比如 Mail 和 Calendar。 两个应用程序都使用 OAuth 2 来保护访问。
现在日历要访问邮件中的数据。如果这些是来自两个不同供应商的应用程序,日历自然会要求用户授权它访问邮件等。
但由于应用程序来自同一来源,我希望它们能够共享数据而无需用户明确授予权限。
或者换句话说:我有 ID/Access/Refresh 个日历令牌。如何在不打扰用户的情况下将它们换成邮件访问令牌?
如何在 OAuth 2 中完成此操作?我控制应用程序和身份提供者。
我想到的唯一解决方案是让邮件和日历成为同一个应用程序,但这似乎不对(还有其他问题,例如,如果您想限制某人访问其中一个应用程序).我也可以在 OAuth 2 之外实现特殊访问,但情况更糟。
Gmail 和 Google 日历就是一个真实的例子。它们都向外界提供 OAuth 2 接口,但您不必让它们相互交谈。
PS。参考白皮书或案例研究将不胜感激
分离的客户
默认情况下,在 OAuth 中,您会注册多个客户端,这些客户端会获得自己的令牌。然后,您将在第一次在它们之间导航时使用单点登录:
Client ID: app1
Scope: openid scope1
Redirect URI: https://app1.mycompany.com
Client ID: app2
Scope: openid scope2
Redirect URI: https://app2.mycompany.com
如果涉及用户同意,用户可以通过这种方式授予对其个人资产访问权限的更多选择。
联合客户
您可以像这样将这些组合成一个条目。请注意,为了使令牌/cookie 存储正常工作,通常有一个单一基域的托管先决条件:
Client ID: combinedapp
Scope: openid scope1 scope2
Redirect URIs: [https://app1.mycompany.com https://app2.mycompany.com]
优缺点
第一个选项在大多数情况下是最干净的,因为您可以避免访问过多数据的令牌。第二个选项对于相关的微用户界面有意义,它们实际上是具有相同权限的单个应用程序。
APIs 和范围
为了跨应用程序共享数据,公司构建了 API 个端点。然后,您可以拥有多个应用程序,每个应用程序使用代表多个业务领域的范围。请参阅 Scope Best Practices 文章作为设计授权的起点。例如,用户使用范围 openid calendar mail
登录日历应用程序 - 因此也可以获得邮件数据。