Oauth2基础

2018-08-16  本文已影响0人  soulsun

我们在开发的时候关于权限会遇到两种情形:认证和授权。

Authentication,即认证,对用户的身份进行认证,判断其身份是否有效,也就是让网站知道“你是你所声称的那个用户”;

Authorization,即授权,在已知用户身份合法的情况下,经用户授权来允许某些操作,也就是让网站知道“你能被允许做那些事情”。

由此可知,授权要在认证之后进行,只有确定用户身份只有才能授权。

Oauth2讨论的就是授权的情况,一般用在第三方应用登录的情况。现在很多Oauth2的实现其实已经加入了伪验证和单点登录的实现,而不仅仅只是授权去拿信息。

要了解Oauth2,首先要了解几个基本概念:

可以参考:

http://www.bubblecode.net/en/2016/01/22/understanding-oauth2/

https://www.cnblogs.com/Wddpct/p/8976480.html

1. 角色 (Roles)

Oauth2中定义了四种角色:

1)资源所有者 (Resource Owner):资源所有者即代表授权客户端访问本身资源信息的用户(User),也就是应用场景中的“开发者A”

2) 资源服务器 (Resource Server):资源服务器托管了受保护的用户账号信息

3) 授权服务器 (Authorization Server):授权服务器验证用户身份然后为客户端派发资源访问令牌。可以和资源服务器是同一个服务器。

4) 客户端 (Client):即代表意图访问受限资源的第三方应用

2. 客户端应用注册

1)一般提供应用名称,应用网站,回调URL

2)注册成功返回 Client ID 和 Client Secret

3. 授权流程(Workflow)

4. 根据不同的情况,Oauth2定义了四种授权类型来应对不同的情况:

1) 授权码授权 (Authorization Code Grant)

2) 默认模式授权 (Implicit Grant)

3) 密码凭证授权 (Resource Owner Password Credentials Grant)

4) 客户端凭证授权 (Client Credentials Grant)

5. 令牌 (Token)

1) Access Token:从授权服务器获取,之后用来去资源服务器获取资源

2) Refresh Token:Access Token过期以后,用它来从授权服务器更新Access Token,一般比Access Token过期时间长。

Spring Boot有官方的示例来实现Oauth2和单点登录的情况。

https://spring.io/guides/tutorials/spring-boot-oauth2/

https://github.com/spring-guides/tut-spring-boot-oauth2/blob/master/overview.adoc

Google有个测试Oauth2的网站可以尝试。

https://developers.google.com/oauthplayground

上一篇 下一篇

猜你喜欢

热点阅读