首页 文章

REST上的身份验证令牌

提问于
浏览
1

我有一个REST Jersey Web服务 .

我的问题是关于这个问题的答案,请检查;

token based authentication in php

在那个答案中,它提到了;

"It then sends a hash of this token and certain characteristics of the request to authenticate the request, e.g. sha1(Token + Timestamp + Request URL + Request Body). Your server can validate this without the client having to send the token in plain text on each request."

任何人都可以解释服务器如何验证“没有客户端必须在每个请求上以纯文本形式发送令牌”?客户端应该每次都向服务器发送令牌吗?

另一个问题是,一旦服务器收到此令牌的散列(其中包括时间戳和用户ID等),服务器如何从此令牌中识别用户而没有存储令牌的外观表或数据库?

2 回答

  • 0

    对于第一个问题:客户端可以发送令牌的散列版本,服务器将散列值与从客户端接收的值进行比较 .

    对于第二个问题:您可以在内存或磁盘上或您认为合适的任何位置保留令牌和用户之间的映射 .

  • 1

    这是使用仅存在于服务器端的密钥对一部分授权令牌进行加密/解密的方法的简化示例 . AUTHORIZATION_TOKEN可以发送到客户端,该客户端将在任何后续请求中发送 .

    1)要登录,用户需要发送userid,password,sessionid,timestamp
    2)成功验证服务器产生TOKEN = encrypt(secretkey,userid sessionid time_stamp) .
    3)服务器向客户端发送AUTHORIZED_TOKEN = TOKEN userid sessionid时间戳
    4)客户端在整个会话期间向每个请求发送此令牌
    5)服务器解密AUTHORIZED_TOKEN的TOKEN部分然后解压缩并比较来自TOKEN的解密的用户ID,sessionid,时间戳,并将其与AUTHORIZED_TOKEN中的纯文本对应物进行比较 .
    6)如果存在任何不等式,服务器将重定向到登录页面 .
    7)没有以明文形式发送的重要信息 .
    8)Secretkey仅存在于服务器端
    9)没有用户映射到磁盘或内存,因为令牌包含userid

相关问题