美文网首页
Web安全协议 — OpenID、OAuth

Web安全协议 — OpenID、OAuth

作者: 右耳菌 | 来源:发表于2022-11-03 23:49 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/qxvutdtx.html