到底什么是OAuth?
OAuth协议研究

OAuth使用场景

我在A网站有一个账户,里面存有我的账户资料和其他信息。我现在第一次到B网站,我想用我在A网站的账户身份登录到B网站。B网站能确认我的身份,但不能得到我在A中的隐私资料。

比如我想用新浪微博账户登录某个游戏APP。然后能登录进去这个游戏,并且游戏能知道我的微博好友谁在玩。

这样的好处:不用在新网站注册新的账户。B网站不会从A网站得到我的密码和其他隐私。

这就是OAuth。现在已经发展到2.0版本了。

怎么实现这个场景

这里有三个角色,A网站、B网站、我自己。 B网站首先会跟我要一个grant授权。然后以此去跟A网站申请token令牌。 A网站会给B网站一个token令牌,以后b网站可以用token来A网站获取有限的数据资源。 A网站为了这一认证过程设置了一个认证服务器Authorization server。

怎么样的一个grant授权?

我自己给B网站一个怎么样的grant授权?既能不告诉他私密信息,又能让A网站能确认我的身份呢?

OAuth 2.0定义了四种授权方式:

在OAuth标准中,A网站的认证服务器叫做Authorization server,B网站叫做client,我自己叫做user。

以QQ互联的OAuth为例:

请求授权码Authorization Code

请求地址:https://graph.qq.com/oauth2.0/authorize

请求方法:GET

请求参数:

返回说明: 如果用户成功登录并授权,则会跳转到指定的回调地址,并在redirect_uri地址后带上Authorization Code和原始的state值。如: http://graph.qq.com/demo/index.jsp?code=9A5F********06AF&state=test

获取token

请求地址:https://graph.qq.com/oauth2.0/token

请求方法:GET

请求参数:

安全事项

官网

*****
Written by Lu.dev on 10 January 2016