zoukankan      html  css  js  c++  java
  • 学习OAuth 2.0课程简记 ~1

    角色

    授权码许可类型

    客户需要授权客户端访问资源持有者的部分资源,这里如果直接将用户名密码给客户端则会产生账号泄露风险,并且无法对资源范围管控,没有到期时间除非修改密码等问题  ~  所以需要授权码,通过授权码,客户端找授权服务换取访问令牌!授权客户端用令牌取访问有限资源

    OAuth 2.0 授权的核心就是颁发访问令牌、使用访问令牌

    为什么要有授权码换访问令牌的步骤 -》》直接返回访问令牌,那我们肯定不能使用重定向的方式。因为这样会把安全保密性要求极高的访问令牌暴露在浏览器上,从而将会面临访问令牌失窃的安全风险,有了授权码的参与,访问令牌可以在后端服务之间传输,同时呢还可以重新建立小明与小兔软件之间的“连接”

    为啥要重定向两次-》》当小明被浏览器重定向到授权服务上之后,小明跟小兔软件之间的 “连接” 就断了,小明授权之后,又重新重定向回到了小兔软件的地址上,这样小明就跟小兔软件有了新的 “连接”,于是有了第二次授权码的重定向

    三方服务首先要到开放平台注册,注明第三方软件也会请求受保护资源的可访问范围,生成对应的app_id 和 app_secret,redirect_uri,scope 等信息

    授权服务

    最终生成 code 和 app_id(第三方软件的应用标识) + user(资源拥有者标识)之间的对应关系

    tokenMap.put(accessToken,appId+"|"+user+"|"+System.currentTimeMillis()+"|"+expires_in); return accessToken;}

    刷新令牌,用户在一定期限内无需重新点击授权按钮,就可以继续使用第三方软件

    JWT 就是用一种结构化封装的方式来生成 token 的技术,分为 HEADER(头部)、PAYLOAD(数据体)和 SIGNATURE(签名)三部分,因为 JWT 令牌本身就包含了之前所要依赖数据库或者依赖 RPC 服务才能拿到的信息

    JWT 令牌需要在公网上做传输。所以在传输过程中,JWT 令牌需要进行 Base64 编码以防止乱码,同时还需要进行签名及加密处理来防止数据信息泄露

    第三方应用客户端关注

    资源所有者

    资源拥有者的凭据,就是用户的凭据,就是用户名和密码,小兔此时就是京东官方出品的一款软件,小明也是京东的用户,防止用户名密码满天飞,使用了 token 来代替这些“满天飞”的敏感信息

    客户端凭据许可

    小兔软件访问了一个不需要用户小明授权的数据,比如获取京东 LOGO 的图片地址,这个 LOGO 信息不属于任何一个第三方用户,“资源拥有者被塞进了第三方软件中” 或者 “第三方软件就是资源拥有者”

    隐式许可

    小明使用的小兔打单软件应用没有后端服务,就是在浏览器里面执行的,第三方软件小兔直接嵌入浏览器中,小兔软件对于浏览器就没有任何保密的数据可以隐藏了,也不再需要应用密钥 app_secret 的值了,也不用再通过授权码 code 来换取访问令牌 access_token 的值了。因为使用授权码的目的之一,就是把浏览器和第三方软件的信息做一个隔离,确保浏览器看不到第三方软件最重要的访问令牌 access_token 的值

    各种类型的对比,安全性授权码最高,

    如果小兔软件是官方出品,那么可以直接使用资源拥有者凭据许可;

    如果小兔软件就是只嵌入到浏览器端的应用且没有服务端,那就只能选择隐式许可;

    如果小兔软件获取的信息不属于任何一个第三方用户,那可以直接使用客户端凭据许可类型

  • 相关阅读:
    openstack--9--深入理解虚拟机
    KVM部署、使用、调优
    Mysql主从---删除master.info和relya-log.info实验
    saltstack实战4--综合练习3
    saltstack实战4--综合练习4
    saltstack实战4--综合练习2
    nmap命令-----高级用法
    saltstack实战4--综合练习1
    saltstack实战3--配置管理之pillar
    nmap命令-----基础用法
  • 原文地址:https://www.cnblogs.com/it-worker365/p/14547870.html
Copyright © 2011-2022 走看看