专业的JAVA编程教程与资源

网站首页 > java教程 正文

单点登陆常用的方式Oauth认证登录

temp10 2024-11-20 21:46:10 java教程 12 ℃ 0 评论

Oauth登录

OAuth 2.0 协议:

OAuth 2.0 是一个行业的标准授权协议。OAuth 2.0 专注于简化客户端开发人员,同时为 Web 应用程序,桌面应用程序,手机提供特定的授权流程。 它的最终目的是为第三方应用颁发一个有时效性的令牌 token。使得第三方应用能够通过该令牌获取相关的资源。常见的场景就是:第三方登录。当你想要登录某个论坛,但没有账号,而这个论坛接入了如 QQ、 等登录功能,在你使用 QQ 登录的过程中就使用了 OAuth 2.0 协议。

单点登陆常用的方式Oauth认证登录

OAuth 2.0 角色:

  • Resource owner,资源所有者,能够允许访问受保护资源的实体。如果是个人,被称为 End-user。
  • Resource server,资源服务器,托管受保护资源的服务器。
  • Client,客户端,使用资源所有者的授权代表资源所有者发起对受保护资源的请求的应用程序。如:web网站,移动应用等
  • Authorization server,授权服务器,能够向客户端颁发令牌。
  • User-agent,用户代理,帮助资源所有者与客户端沟通的工具,一般为 web 浏览器,移动 APP 等。

协议流程:

(A) Client 请求 Resource Owner 的授权。授权请求可以直接向 Resource Owner 请求,也可以通过 Authorization Server 间接地进行。

(B) Client 获得授权许可。

(C) Client 向 Authorization Server 请求访问令牌。

(D) Authorization Server 验证授权许可,如果有效则颁发访问令牌。

(E) Client 通过访问令牌从 Resource Server 请求受保护资源。

(F) Resource Server 验证访问令牌,有效则响应请求。

授权类型:

OAuth 2.0 存在四种授权类型,分别用于不同的场景:

Authorization Code(授权码 code):服务器与客户端配合使用。

Implicit(隐式 token):用于移动应用程序或 Web 应用程序(在用户设备上运行的应用程序)。

Resource Owner Password Credentials(资源所有者密码凭证 password):资源所有者和客户端之间具有高度信任时(例如,客户端是设备的操作系统的一部分,或者是一个高度特权应用程序),以及当其他授权许可类型(例如授权码)不可用时被使用。

Client Credentials(客户端证书 client_credentials):当客户端代表自己(客户端也是资源所有者)或者基于与授权服务器事先商定的授权请求对受保护资源的访问权限时,客户端凭据被用作为授权许可。

授权码模式:

  • 资源拥有者(用户)需要登录客户端,他选择了第三方登录。
  • 客户端重定向到第三方授权服务器。此时客户端携带了客户端标识(client_id),那么第三方就知道这是哪个客户端,资源拥有者确定(拒绝)授权后需要重定向到哪里。
  • 用户确认授权,客户端被重定向到登录时给定的 URI,并携带了第三方给定的 code。
  • 在重定向的过程中,客户端拿到 code 与 client_id、client_secret 去授权服务器请求令牌,如果成功,直接请求资源服务器获取资源,整个过程,用户代理是不会拿到令牌 token 的。
  • 客户端拿到令牌 token 后就可以向第三方的资源服务器请求资源了。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表