OpenId connect(OAuth 2):当资源所有者不是最终用户(SSO)时,如何查看流程?

时间:2016-09-08 10:34:29

标签: oauth oauth-2.0 single-sign-on openid-connect

我想在我的应用程序中提供一些标准化的SSO机制(一些不同的客户端,后端的服务数量不断增加)。我想知道OIDC / OAuth 2是否适合它。 在我看到的所有示例中,最终用户是资源所有者,它通过重新分区到要求权限的页面来授予(或不授予)某些外部应用程序的权限。 我的用例不同,我想在我的系统中使用OAuth(对于api,网页等):资源所有者是一些带数据库的服务(加上有权访问它的管理员),最终用户试图从中获取一些资源系统。用户不能授予任何东西,他可以被授予。我认为这是最经典的场景,可以命名为Single-Sign-On。在OAuth 2(或最好是OpenId Connect)中是否有任何标准流程?它可以实现吗?或者我正在寻找一个错误的工具?

2 个答案:

答案 0 :(得分:2)

OIDC / OAuth既可用于消费者场景,也可用于企业场景。 OAuth的同意步骤在面向消费者的场景中很有用。在处理与您类似的企业场景时,请求同意是没有意义的,因为它是隐含的,至少对于企业的应用程序而言。这当然包含在OAuth / OIDC中:授权服务器不需要请求同意,并且(通常)可以配置为跳过特定客户端的该步骤。因此:未经同意使用OpenID Connect将是合适的。

答案 1 :(得分:0)

对于您的用例,您可以结合使用OpenID Connect和OAuth Client_Creds流程。例如,假设您有一个HRMS应用程序,需要从一些数据库中获取员工数据以显示给员工。

  1. 使用OPenID提供商注册HRMS
  2. 将HRMS作为客户端注册到OAuth服务器(OpenID Server和OAuth服务器可以相同)
  3. 当用户访问HRMS应用程序时:

    一个。检查Id_token cookie,如果不存在,则重定向到IDP

    湾IDP进行身份验证,如果成功,则使用ID令牌

    重定向回SP

    ℃。如果令牌有效,则SP将令牌设置为浏览器中的cookie,使用另一个重定向到自身但是到主页

  4. 现在所有处理都是服务器端: 一个。 HRMS应用程序点击IDP获取用户数据

    湾如果成功,则会命中OAuth服务器以获取access_token

    ℃。如果成功,则使用access_token与DB Service进行通信 获取数据

  5. SP =服务提供商,IDP =身份提供商 基于安全考虑,实际流量可能略有不同。 希望这会有所帮助。