zoukankan      html  css  js  c++  java
  • token的认证使用

    为什么要用 Token?

    可以解决哪些问题呢?

    1.Token 完全由应用管理,所以它可以避开同源策略

    2.Token 可以避免CSRF 攻击

    3.Token 可以是无状态的,可以在多个服务间共享

    需要设置有效期吗?

    对于这个问题,我们不妨先看两个例子。一个例子是登录密码,一般要求定期改变密码,以防止泄漏,所以密码是有有效期的;另一个例子是安全证书。SSL 安全证书都有有效期,目的是为了解决吊销的问题。所以无论是从安全的角度考虑,还是从吊销的角度考虑,Token 都需要设有效期。

    那么有效期多长合适呢?

    只能说,根据系统的安全需要,尽可能的短,但也不能短得离谱——想像一下手机的自动熄屏时间,如果设置为 10 秒钟无操作自动熄屏,再次点亮需要输入密码,会不会疯?如果你觉得不会,那就亲自试一试,设置成可以设置的最短时间,坚持一周就好(不排除有人适应这个时间,毕竟手机厂商也是有用户体验研究的)。mis系统不也是根据用户的使用来调整的锁屏时间吗

    时序图表示:

    Token类型

    两种最常见的token类型:access tokenrefresh token

    • Access Token携带了直接访问资源的必要信息。换句话说,当客户端将access token传给管理资源的服务器时,该服务器可以使用token中包含的信息来决定是否授权给客户端。access token通常有一个过期时间,而且通常时间非常短暂。

    • Refresh Token携带了用来获取新的access token的必要信息。换句话说,当客户端需要使用access token来访问特定资源的时候,客户端可以使用refresh token来向认证服务器请求下发新的access token。通常情况下,当旧的access token失效之后,才需要获得新的access token,或者是在第一次访问资源的时候。refresh token也有过期时间但是时间相对较长。refresh token对存储的要求通常会非常严格,以确保它不会被泄漏。它们也可以被授权服务器列入黑名单。

    通常由具体的实现来定义token是透明的还是不透明的。通用实现允许对access token进行直接授权检查。也就是说,当access token传递给管理资源的服务器时,服务器可以读取token中包含的信息,并决定用户是否被授权(不需要对授权服务器进行检查)。这就是token必须签名的原因之一(例如使用JWS)。另一方面,refresh token通常需要对授权服务器进行检查。处理授权检查的这种分离方式有以下3个优点:

    1. 改进了对授权服务器的访问模式(更低的负载,更快的检查)
    2. 泄露access token的访问窗口更短(这些access token会很快过期,从而减少泄露的token访问受保护资源的机会)
    3. 滑动session(见下文)

    滑动session

    滑动session是只一段时间不活动后过期的session。正如你想到的,使用access token和refresh token可以很容易实现这个功能。当用户执行操作时,会发出一个新的access token。如果用户使用过期的access token,则session被认为是不活动的,并且需要新的access token。这个token是否可以通过access token获得,或者是否需要新的认证轮回,由开发团队的要求来定义。

    安全考虑

    refresh token的存活时间较长。这意味着当客户端获取refresh token时,必须安全的存储此token以防止潜在攻击者使用此token。如果refresh token泄露,它可能会被用来获取新的access token(并访问受保护的资源),直到它被列入黑名单或到期(可能需要很长时间)。refrsh token必须发给单个经过身份验证的客户端,以防止其他方使用泄漏的token。访问令牌必须保密,但是正如你所想象的那样,安全考虑因其寿命较短而不那么严格。

  • 相关阅读:
    PS插件安装
    在linux中安装Python
    快慢指针 | 环形链表
    Intel VT-x 支持但处于禁用状态开启
    函数
    连接(交叉连接、内连接、外连接、自连接)
    游标cursor 与循环fetch
    Identity 自增长标识
    Trigger 触发器
    Procedure 存储过程
  • 原文地址:https://www.cnblogs.com/yishifuping/p/13381397.html
Copyright © 2011-2022 走看看