Spring Seurity系列(十一) OAuth协议简介

1:OAuth协议解决的问题

举个栗子:

 如果要开发一个第三方应用进行微信图片的数据的读取,并将照片进行美化处理。那么这里就会出现微信不会将微信的账号和密码给第三方应用的问题。

即是给了用户名和密码也会存在微信账号安全问题以及微信应用的权限问题。因此OAuth协议就是为了解决这些问题的。

Token中定义只能有哪些权限,并在Token中设置有效期。以上问题就可以解决了。

2:OAuth协议运行流程

相关角色:

2.1:Provider(服务提供商):在我们的例子中微信给第三方应用数据,就可以称为服务提供商

2.1.1:Authorization Server(认证服务器):认证用户身份,产生令牌

2.1.2:Resource Server(资源服务器):存放数据的。并在这里验证请求中携带的Token信息

2.2:Resource Owner(资源所有者):用户的自拍数据,所有者为用户自己

2.3:Client(第三方应用):慕课微信助手

访问流程:

1:用户在使用第三方应用的时候,第三方应用请求用户进行微信的授权。

2:用户同意授权后,第三方应用请求微信的认证服务器,并验证用户是否同意了授权,如果认证通过,就会返回一个Token。

3:第三方应用携带Token去请求资源服务器,资源服务器根据Token找那个的信息开放相应的资源给第三方应用。

在第二步中有这几种授权模式:

授权码模式:流程最完整,功能最完善。

授权码模式具体的实现步骤:

1:第三方请求授权时会引导用户到认证服务器,用户同意授权。

2:认证服务器返回一个授权码并再返回到提前定义好的第三方的一个Url上面。

3:第三方携带授权码再去认证服务器去请求Token,然后再返回一个想要的Token.

因此授权码模式是要求第三方应用要有独立的服务器的。

而简化模式不需要。以后的章节中会对简化模式进行介绍。

猜你喜欢

转载自blog.csdn.net/newhanzhe/article/details/81267784