Authentication 多个服务能否使用一个依赖方?

Authentication 多个服务能否使用一个依赖方?,authentication,oauth,google-oauth,openid,openid-connect,Authentication,Oauth,Google Oauth,Openid,Openid Connect,我的公司将使用OpenID connect,并使用谷歌作为身份提供商,这些天我已经阅读了OpenID connect文档,仍然有一些问题,首先是我们有多个服务,我们应该为每个服务创建依赖方,还是可以为我们的所有服务创建一个依赖方 例如,公司网站:company.com,以及3个完全不同的服务:service1.com,service2.com,service3.com,那么我们应该提供3个依赖方:auth.service1.com,auth.service2.com,所以,如果用户点击servi

我的公司将使用OpenID connect,并使用谷歌作为身份提供商,这些天我已经阅读了OpenID connect文档,仍然有一些问题,首先是我们有多个服务,我们应该为每个服务创建依赖方,还是可以为我们的所有服务创建一个依赖方

例如,公司网站:
company.com
,以及3个完全不同的服务:
service1.com
service2.com
service3.com
,那么我们应该提供3个依赖方:
auth.service1.com
auth.service2.com
,所以,如果用户点击
service1
上的
login
按钮,指向
auth.service1.com
将用户重定向到
account.google.com


或者我们可以为所有3项服务提供一个依赖方,
auth.company.com

首先了解依赖方在OpenID Connect(OIDC)上下文中的含义。从

依赖方(RP)

OAuth 2.0客户端应用程序需要最终用户身份验证和 来自OpenID提供商的声明

RP是OAuth2.0客户端。因此,如果您检查OAuth 2.0规范的定义,您会发现以下内容(摘录,请参阅链接中的完整描述)

应用程序代表 资源所有者及其授权

如我所见,答案取决于这些突出的要点

  • 每个服务是否可以单独归类为一个应用程序?他们之间有独立的行为吗
  • 授权约束如何作用于这些服务。它们有独立的功能吗?它们如何表示最终用户(资源所有者)

因此,如果您将每个服务视为独立的应用程序并具有自己的授权约束,那么我认为它们应该考虑使用不同的RPS。否则,如果这些服务相互依赖,并且内部使用相同的授权约束,则使用单个RP来表示它们


无论如何,如果不确切了解这些服务的实际功能,就很难正确回答

是的。如果逻辑不同,您只需要在RP中使用一些自定义代码来管理来自多个应用程序的请求。这还提供了一个将逻辑从客户端抽象出来并避免代码重复的地方。

谢谢,是的,这些服务完全不同。唯一相同的事情是使用谷歌作为身份验证。但由于这些服务都属于一家公司,我们不喜欢为每项服务开发每个RP,只是想确认我们是否可以为所有这些服务开发一个RP?@Sato如果不了解这些服务,很难回答。但是如果您为所有三个服务开发一个RP,那么您将使用单个令牌访问所有服务。这意味着,如果您登录到一个服务A,您也可以使用来自登录A的相同访问令牌访问服务B和C。这方面有安全考虑。但是,您也可以使用scope参数来控制这些参数。因此,一次登录只允许您使用一项服务。在做出选择时,必须考虑所有这些因素。