Web安全协议 — OpenID、OAuth

1. 认证与授权

无论是web端还是移动端,现在第三方应用账户登录已经成为了标配,任意打开个网站都可以看到,QQ/微信账号登录的字样。

使用第三方账户的登录的过程,既要限制用户身份只让有效注册用户才能登录,还要根据注册用户的不同身份来控制能浏览的内容,这就需要认证和授权

认证(Authentication)和授权(Authorization)是两个容易被弄混的概念,尤其是只看英文。

认证意味着证实某个用户是他所声明的那个人;授权意味决定一个身份确定的用户能够访问那些资源。

由此可见,应用需要先认证用户身份,然后依据用户身份再授权,二者需要联合使用。


2. Web安全协议

统一身份认证与授权中三种最常见的 web安全协议是OpenID,OAuth和SAML。接下来我们通过举例来介绍这三种协议中常用的OpenId和OAuth协议。

2.1 OpenID

OpenID是一种开放的身份验证标准,由非营利性OpenID Foundation推广。互联网上有很多账户都是支持OpenlD比如谷歌、雅虎、PayPal等等。

用户要使用OpenlD就必须先在OpenID身份服务器(Identity Provider,IDP)获得OpenID账号(比如Google账户)。用户可以使用OpenlD账户来登录任何一个接受OpenID认证的服务应用(the relying party,RP,依赖方)。OpenID协议标准就是提供一个框架用来IDP和RP之间通信。

本质而言,用户的OpenID是一个为用户个人所拥有的特殊URL(比如study2016.openid.com),所以有些网站甚至会提供选项让用户自己去填写OpenID。

OpenlD的最新版本是OpenID Connect。


3. OAuth2

很多的网站都是允许第三方登录的,例如网易云等等,例如:微信和QQ登录。这里假设使用QQ登录后,就会出现一个地址,大致如下:

https://graph.qq.com/oauth2.0/show?which=Login&display=p
c&client_id=100459398&response_type=code&redirect_uri=https%3A%2F%2Fstudy.163.com%2Fsns%2Fqq%2FoAuthcallDack.htm%3FoauthType%3Dlogin%26returnUr1o3DanKUCnMoLy9zdHVkeS4xNjMuY29tP2Zyb209c3R1ZHk%3D%26nrsstcw%3Dtalse%26nc%3Dtrue

https://graph.qq.com/oauth2.0/show?which=Login&display=pc&
client_id=100459398&
response_type=code&
redirect_uri=https%3A%2F%2Fstudy.163.com%2Fsns%2Fqq%2FoAuthcallbacK.ntmy%03FoauthType%3Dlogin%26returnUrl%3DaHROcHM6Ly9zdHVkeS4xNjMuY29tP2Zyb209c3R1Z
Hk%3D%26nrsstcw%3Dfalse%26nc%3Dtrue

code:代表服务器希望收到授权码;
client_id:注册应用时颁发的ID;
redirect_uri:指明当用户授权完成之后返回的地址;

OAuth2是一个委托协议,它可用让那些控制资源的人允许某个应用代表这些人,而不是假冒和模仿这些人,这个应用从资源的所有者哪里得到授权((Authorization)和Access Token,随后就可以使用这个Access Token来访问资源。

客户端应用可以请求Access Token,使用Tooken就可以访问API资源了。在上述的例子中,是QQ给网易云课堂授权。

资源所有者(Resource Owner),他拥有访问API资源的权限,并且他还可以委派权限(delegate)给其他应用来访问API。资源所有者通常是可以使用浏览器的人。

被保护的资源(Protected Resource) 就是资源所有者拥有权限去访问的组件,它可以是很多种形式的,但是WebApi的形式还是最常见的。

客户端(Client) 应用就是代表资源所有者访问被保护资源的一个软件,注意它既不是浏览器,也不是给你钱让你开发软件的人,在OAuth2里面,它是指被保护的API资源的消费者。

授权服务器(AS)是被受保护的资源所信任的,它可以发行具有特定目的的安全凭据给客户端应用,这个凭据就叫做OAuth的Access Token。

下面的几个图用于理解上边的内容


如果觉得有收获就点个赞吧,更多知识,请点击关注查看我的主页信息哦~

你可能感兴趣的:(Web安全协议 — OpenID、OAuth)