Oauth2.0
Oauth2是一种委托协议,你可以通过Oauth2协议授权给某个应用程序,让该应用程序代替你去访问你的某些资源。资源拥有者(你)授权给某个应用,该应用会获得一个token(类似委托书,代表着这个这个应用获取了你的授权,可以代表你),这个应用带着这个token代表你去资源服务器获取你的某些资源。
举个生活中的例子:如果你要买车,车子付钱之后要上牌,但是你有没有时间,4s店提供代办服务。但是4s店代办车牌需要你的完税证明及委托书等证明才能去车管所代办。你需要以委托书的形式授权给4s店,委托4s帮你代办。Oauth2就是办理委托和授权的协议。
最最重要的:Oauth2不是认证协议,没有认证的功能。
最最最重要的是:token中只有你授权的权限。你本身可能有很多权限,你可以只选择一部分权限授权给应用,token代表了你授权的权限。
最最最最重要的是:这种授权时临时的,有时间期限。第三方应用不能永远代表你去访问这些资源。因此,token是临时的,临时授权。
到底什么是Oauth2?
The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an
approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf.
Oauth2是个授权框架,它可以使某个第三方引用获取到对某个HTTP服务有限的访问权限。这种权限的获得可以通过编排一个资源拥有者和HTTP服务之间的授权交互流程获得,也可以通过三方应用自己的行为获取权限。
Oauth2协议中涉及到的几种角色:
Resource Owner: 资源拥有者,指用户。
Reosurce Server: 资源服务器,存放Protected Resource.用户的资源在资源服务器上存储保存,使用时需要到资源服务器获取.
Client: 第三方应用(可以认为是某个微服务)。这个应用(服务)想要代表用户去获取资源服务器上用户的一些资源。
User-Agent: 简单认为就是浏览器。
Oauth2的目的就是 让Client能够访问用户在资源服务器上的资源(取得用户的某种权限),并且在这期间不出现安全隐患。这种权限的取得:
1. 不会让Client知道用户的账号密码
2. 不会有越权访问,比如资源服务器上有很多资源,但只授权client访问部分资源
3. 临时授权,授权存在一定期限,期限过去之后就不能访问了。再访问需要再次申请用户的允许。
Oauth2协议的流程:
Client(某个微服务)想要访问Resource Server上的资源,流程如下:
1. Client要获取用户的授权,因此它将Resource Owner 引导至Authorization Server(通过浏览器redirect的方式)
2. 授权服务器向用户展示出权限列表,用户勾选授予Client的权限,并点击授权按钮,将授权结果告知给授权服务器
3. 授权服务器获取到授权信息后,发一个授权码(Authorization Grant,也称为grant_code,授权码代表着用户的授权)并将这个授权码给到Client
4. Client拿到授权码之后,拿着授权码向资源服务器请求获取一个access token(访问码)
5. Client拿着访问码去资源服务器访问它想要获取的资源。
这是Oauth2协议的一般流程。实际上Oauth2有好几种授权流程,后续再说。
标签:协议,Oauth2,Client,授权,服务器,权限,资源 From: https://www.cnblogs.com/lucidar/p/18248177