我想在我的应用程序中提供一些标准化的SSO机制(一些不同的客户端,后端的服务数量不断增加)。我想知道OIDC / OAuth 2是否适合它。 在我看到的所有示例中,最终用户是资源所有者,它通过重新分区到要求权限的页面来授予(或不授予)某些外部应用程序的权限。 我的用例不同,我想在我的系统中使用OAuth(对于api,网页等):资源所有者是一些带数据库的服务(加上有权访问它的管理员),最终用户试图从中获取一些资源系统。用户不能授予任何东西,他可以被授予。我认为这是最经典的场景,可以命名为Single-Sign-On。在OAuth 2(或最好是OpenId Connect)中是否有任何标准流程?它可以实现吗?或者我正在寻找一个错误的工具?
答案 0 :(得分:2)
OIDC / OAuth既可用于消费者场景,也可用于企业场景。 OAuth的同意步骤在面向消费者的场景中很有用。在处理与您类似的企业场景时,请求同意是没有意义的,因为它是隐含的,至少对于企业的应用程序而言。这当然包含在OAuth / OIDC中:授权服务器不需要请求同意,并且(通常)可以配置为跳过特定客户端的该步骤。因此:未经同意使用OpenID Connect将是合适的。
答案 1 :(得分:0)
对于您的用例,您可以结合使用OpenID Connect和OAuth Client_Creds流程。例如,假设您有一个HRMS应用程序,需要从一些数据库中获取员工数据以显示给员工。
当用户访问HRMS应用程序时:
一个。检查Id_token cookie,如果不存在,则重定向到IDP
湾IDP进行身份验证,如果成功,则使用ID令牌
重定向回SP℃。如果令牌有效,则SP将令牌设置为浏览器中的cookie,使用另一个重定向到自身但是到主页
现在所有处理都是服务器端: 一个。 HRMS应用程序点击IDP获取用户数据
湾如果成功,则会命中OAuth服务器以获取access_token
℃。如果成功,则使用access_token与DB Service进行通信 获取数据
SP =服务提供商,IDP =身份提供商 基于安全考虑,实际流量可能略有不同。 希望这会有所帮助。