我正在尝试使用 OAuth2 进行身份验证/授权,但经过大量阅读后,我很困惑......我试图了解 OAuth 和 OpenIDConnect 如何相互关联,以及我如何准确地将它们用于授权。
据我目前了解:
OpenID Connect最适合身份验证,OAuth 最适合授权
OAuth2授权是通过范围完成的
范围是用户授予客户端的权限,在资源服务器上验证
OpenID Connect id_token 主要用于客户端应用程序,提供用户信息,而不是作为资源服务器验证用户的一种方式
这是我的用例:
- 我需要为我们制作的一组完全无状态的 Web 服务提供 SSO
- OAuth 仅限于 resource_owner 授权
- 身份服务器在我们这边提供,并连接到 LDAP 服务器
- 只有受信任的应用程序才能注册为服务提供商
而我正在尝试做的事情让我感到困惑:
- 只有授权用户才能访问给定的 Web 服务 API
因此,我需要一些方法来检查外部实体在资源服务器上授予用户的权限。我认为哪个排除了使用 OAuth 进行授权的可能性?
我不确定如何使用 OAuth/OpenID 连接来实现这一点,甚至不确定它是否适合我的用例。
- 是否可以使基于角色的访问完全适用于 OAuth2 范围?
- 将id_token传递给资源服务器是否可以,并带有包含用户角色的声明(并完全丢弃 access_token)?因此 id_token 将用于身份验证和授权。鉴于 id_token 已签名并包含散列,这会很好,对吧?
- 我是否应该只通过 OpenIDConnect 进行身份验证,通过检查 id_token 的存在,完全废弃 access_token,并开发我自己的基于角色的授权系统?
为文字墙道歉,我只是不确定我是否误解了 OAuth/OpenID Connect 的范围。我是否做出了错误的假设?