美文网首页
接口安全设计-token (二)

接口安全设计-token (二)

作者: mysimplebook | 来源:发表于2019-11-08 12:11 被阅读0次

        总的来说,基于token的身份验证原理是用户登录后向服务器提供用户认证信息(如账户和密码),服务器认证完后给客户端返回一个Token令牌,用户再次访问站点其他接口获取信息时,需要带上此令牌。服务端接收到请求后进行Token验证,如果Token不存在或过期,说明请求无效,并拒绝服务。

        下面以JWT为例说明token验证的工作原理。

JWT

JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。

首先,在服务器身份验证之后(即客户端通过用户名和密码验证),将生成一个JSON对象并将其发送回用户,为了防止用户篡改数据,服务器将在生成对象时添加签名,一个jwt数据封装示意图如下

其中,JWT头部分是一个描述JWT元数据的JSON对象,通常如下所示。

{

"alg":"HS256",

"typ":"JWT"

}

在上面的代码中,alg属性表示签名使用的算法,默认为HMAC SHA256(写为HS256);typ属性表示令牌的类型,JWT令牌统一写为JWT。

有效载荷部分,是JWT的主体内容部分,也是一个JSON对象,包含需要传递的数据(用户信息)。

签名哈希部分是对上面两部分数据签名,通过指定的算法生成哈希,以确保数据不会被篡改。首先,需要指定一个密钥(secret)。该密码仅仅为保存在服务器中,并且不能向用户公开。然后,使用标头中指定的签名算法(默认情况下为HMAC SHA256)根据以下公式生成签名。

HMACSHA256(base64UrlEncode(header)+ "." + base64UrlEncode(payload),

secret)

在计算出签名哈希后,JWT头、有效载荷和签名哈希的三个部分组合成一个字符串,每个部分用"."分隔,就构成整个JWT对象。

然后,客户端接收服务器返回的JWT,将其存储在Cookie或localStorage中。

此后,客户端将在与服务器交互中都会带JWT。如果将它存储在Cookie中,就可以自动发送,但是不会跨域,因此一般是将它放入HTTP请求的Header Authorization字段中。

Authorization: Bearerxxxxxxxxx

当跨域时,也可以将JWT被放置于POST请求的数据主体中。

最后,当服务器收到这个token后,用同样的算法再次计算签名,然后和客户端发过来的签名做比较,如果相等,说明已登录。

JWT的最大缺点是服务器不保存会话状态,所以在使用期间不可能取消令牌或更改令牌的权限。也就是说,一旦JWT签发,在有效期内将会一直有效。此外,token如果被劫持,那么就可以伪造请求和篡改参数,因为JWT本身包含认证信息,因此一旦信息泄露,任何人都可以获得令牌的所有权限。为了减少盗用,JWT的有效期不宜设置太长。对于某些重要操作,用户在使用时应该每次都进行进行身份验证,因此为了减少盗用和窃取,JWT不建议使用HTTP协议来传输代码,而是使用加密的HTTPS协议进行传输。

此外,在单点登录架构中,需要每个业务系统都需要保持一样的算法和密钥。

相关文章

  • 接口安全设计-token (二)

    总的来说,基于token的身份验证原理是用户登录后向服务器提供用户认证信息(如账户和密码),服务器认证完后...

  • API接口安全性设计

    API接口安全性设计 接口的安全性主要围绕Token、Timestamp和Sign三个机制展开设计,保证接口的数据...

  • 接口安全设计-token (一)

    Token(令牌)就是一个长的字符串,有了合法的令牌才被允许访问服务器提供的接口。 在说明token之前,先看一下...

  • API接口安全性设计

    接口的安全性主要围绕Token、Timestamp和Sign三个机制展开设计,保证接口的数据不会被篡改和重复调用,...

  • API接口安全性设计

    接口的安全性主要围绕Token、Timestamp和Sign三个机制展开设计,保证接口的数据不会被篡改和重复调用,...

  • 公众号配置

    一:设置 JS接口安全域名 和 网页授权域名 二:设置获取access_token白名单 IP:115.29.22...

  • 阿里大师带你详解API接口安全

    API安全机制 为什么要保证API安全 接口的安全性主要围绕Token、Timestamp和Sign三个机制展开设...

  • JSON Web Token 介绍

    什么是 JSON Web Token JSON Web Token (JWT) 是为了在网络间安全地传输信息而设计...

  • OAuth2和JWT学习资源记录

    八幅漫画理解使用JSON Web Token设计单点登录系统JSON Web Token - 在Web应用间安全地...

  • 用例参数关联extract

    接口有关联时,如先登录后进行页面操作。需要先从第一个接口将token提取第二个接口再引用token。在Httpru...

网友评论

      本文标题:接口安全设计-token (二)

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