2017-03-02 65 views
2

因此,我只是在使用OWIN的Web API应用中实现了基于令牌的认证,并且我能够理解它是如何工作的概念至少在表面上)。服务器如何知道承载令牌是否有效而不将其存储在磁盘或内存上

我无法理解的是服务器如何验证生成的承载令牌而不将其存储在磁盘或内存中。我的意思是确定过期日期可能是在令牌本身加密的,但只有在过期时才适用。那么服务器如何做到这一点?

更新:

好吧,我可以看到的是权利要求存放在token.So在一定程度上服务器仍在检查与数据库验证期间是否正确?否则,让我们假设我是服务器,我能够给令牌解密这个对象:

{ 
    "iss": "thesite.com", 
    "exp": 1300819380, 
    "name": "Chris Sevilleja", 
    "admin": true 
} 

所以,现在的问题是确实的事实,我(服务器)能够令牌解密成关键值对(检查是否存在像'iss','exp'这样的特定键并检查像'admin'键这样的值必须为真)意味着我将授权Web请求?

回答

0

JWT令牌由三个由点(。)分隔的部分组成。

  1. 第一部分是标题。
  2. 第二部分是有效载荷
  3. 第三部分是签名(说S0JWT Format
  4. 签名是使用头和有效载荷创建。

当服务器收到JWT令牌时,它会根据传入的标头和有效负载创建临时签名(比如s1)。

  • 如果s0和s1签名相同,则令牌有效。
  • 另外,令牌还包含用于验证令牌的声明。例如exp声明包含unix时期,在此之后令牌被视为无效。
0

令牌使用JWT格式(JSON Web令牌)进行编码。这在标准(https://tools.ietf.org/html/rfc7519)中有详细描述,您会看到令牌包含一定数量的声明,其中包括过期日期(exp)。

+0

谢谢@ Jean-Marc Prieur,我考虑你的答案更新了这个问题。 – james

相关问题