OAuth2是工业标准的授权协议。OAuth2取代了在2006创建的原始OAuthTM协议所做的工作。OAuth2专注于客户端开发人员的简单性,同时为Web应用程序、桌面应用程序、移动电话和客厅设备提供特定的授权流程。
OAuth2.0 的应用
在这个协议之前,阮一峰老师讲了一个例子:
有一个云打印的应用,他可以帮助用户打印自己在谷歌上的照片。如果我们想使用这样一个应用。传统的方式就是,用户必须把自己的账号密码告诉云打印。
这样就会出现几个问题。
1.云打印这个应用为了后续的服务就必须存下用户的账号密码
2.没有限制云打印的授权的范围和时间
3.用户只有修改密码才会收回授权(所有获得授权的第三方应用都会失效)
4.只要有一个第三方应用被破解,那么用户的密码就泄露
认证交互流程
图片.png图片.png
具有一下几种认证模式:
- 简化模式(implicit),(在redirect_uri 的Hash传递token; Auth客户端运行在浏览器中,如JS,Flash)
2.密码模式(resource owner password credentials),将用户名,密码传过去,直接获取token;
- 客户端模式(client credentials),无用户,用户向客户端注册,然后客户端以自己的名义向'服务端'获取资源;
在OAuth2中至少是有用户,应用服务器,认证服务器这几个角色在交互。OAuth的作用就是让"客户端"安全可控地获取"用户"的授权,与"应用服务器"进行互动。它具有以下优点。
- 简单:不管是OAUTH服务提供者还是应用开发者,都很容易于理解与使用;
- 安全:没有涉及到用户密钥等信息,更安全更灵活;
OAuth2 其他应用场景
认证登陆 第三方登录SSO
Spring Security OAuth。
- 开放:任何服务提供商都可以实现OAUTH,任何软件开发商都可以使用OAUTH;
网友评论