OAuth 授权所需信息
1.应用名称
2.应用网站
3.重定向URI或回调URL(redirect_uri)
4.客户端标识client_id
5.客户端**client_secret
点击授权--------->地址栏信息:
https://abcdefg.com/abcd123/12432154321?client_id=15342534dfgtwa&redirect_url=https:1243324fdqwrdf&response_type=code&state=124325324543264rdfged
(client_id,唯一地标识了客户端应用)
(response,重定向的url,点击授权确认之后会跳转到客户端某一个链接上)
(response_type=code&state=,授权的类型,在授权码协议中固定死的就是code,state是本地状态,客户端网站生成的一个随机数,这个随机数是储存起来的,当确定授权之后,资源服务器会将这个数发给客户端网站,同时带上名字为code的一个参数信息,客户端核对是否正确,防止CSRF攻击(跨站请求伪造))。
步骤:
1:客户端向资源拥有者发送授权请求。
2:客户端获得授权者的一个授权许可。
3:客户端把许可再发送给授权服务器进行验证。
4:授权服务器颁发一个Access Token令牌给客户端。
5:客户端拿着令牌去资源服务器获取账号信息。
6:资源服务器返回一个受保护的资源。
例如:使用Ruby China 时候需要github授权
client(客户端 Ruby China)
Resource Owner(资源拥有者,github用户)
Authorization Server(授权服务器)
Resource Server(资源服务器,github)
- Ruby China向github用户发送授权请求
- Ruby China 获得 github用户的授权许可
- Ruby China 把许可再发送给授权服务器(Authorization Server)进行验证
- 授权服务器(Authorization Server)颁发一个令牌(Access Token)给客户端。
- Ruby China拿着令牌去资源服务器(github服务器)获取账号信息。
- github服务器返回一个受保护的资源给Ruby China