记录一下今天工作的时候升级一个认证服务遇到的小问题,虽然最后解决只有一行代码,却花了差不多3个小时。
初始版本为
springboot 1.5.9.RELEASE
springcloud Dalston.SR1
升级为
springboot 2.0.3.RELEASE
springcloude finchley.RELEASE
升级改造完成之后,服务运行正常,但是请求认证的时候报错:
http://localhost:9000/oauth/token?grant_type=password&scope=app&client_id=client_2&client_secret=123456&username=user&password=123456
回复
{
“error”: “invalid_client”,
“error_description”: “Bad client credentials”
}
客户端通过客户端的id和secret申请授权,这种方式给出的令牌,是针对第三方应用的,而不是针对用户的,即有可能多个用户共享同一个令牌。
View Details首先我们得了解什么是Oauth2.0,简单来说Oauth2.0它是一个授权协议。我们可能会听说过,使用Oauth2.0来实现单点登录SSO,以及第三方登录。那个什么是授权?
举个通俗易懂的例子,就是第三方人员A要想进入B公司的大厦进行业务交流的时候,因为A并不是B公司的员工,出于安全的缘故,所以他不能够自由的出入B公司的大厦。那个A到了B公司前台的时候,A得去前台和B公司前台工作人员说明来意,并且出示邀请(访问)证明,此时B公司前台工作人员就会给你一张临时工牌让你进入大厦。
在这个例子当中,A没有工牌所以是无法进入B公司大厦里进行业务交流,B公司前台给A一张临时工牌,这个操作就相当于授权。
总的来说,OAuth 2.0 这种授权协议,就是保证第三方(软件)只有在获得授权之后,才可以进一步访问授权者的数据。
View DetailsOAuth 是一个开放的授权标准,允许客户端代表一个资源所有者获得对受保护服务器资源的访问权限。资源所有者可以是另一个客户端或最终用户。OAuth 还可以帮助最终用户将对其服务器资源的访问权限授权给第三方,而不必共享其凭据,比如用户名和密码。本系列文章遵从 RFC6749 中列出的 OAuth 2.0 授权框架。可以在 Internet Engineering Task Force 的网站上找到 RFC 6749 中列出的完整 OAuth 2.0 授权框架(请参阅 )。
View Details