栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JWT发行相同的令牌

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JWT发行相同的令牌

什么是基于令牌的身份验证方案

在基于令牌的身份验证方案中,令牌成为用户的凭据。硬凭证(例如用户名和密码)被交换为必须在每个请求中发送的令牌,然后服务器可以执行身份验证/授权。令牌可以在短时间内有效,可以被撤销,可以携带范围详细信息(令牌可以要求的内容)等。

使用令牌,您必须能够识别针对您的API的用户。因此,为所有经过身份验证的用户使用单个令牌是没有意义的。

解决您的问题

使用JWT后,您可以使用用户名声明所有权。还可以考虑为您的令牌添加一个过期日期(

exp
声明)。您不希望您的令牌永远有效,对吗?

对于java-jwt,请使用以下命令:

try {    Algorithm algorithm = Algorithm.HMAC256("secret");    Date expirationDate = Date.from(ZonedDateTime.now().plusMinutes(60).toInstant());    String token = JWT.create().withExpiresAt(expirationDate).withClaim("username", username).sign(algorithm);} catch (UnsupportedEncodingException e){    // UTF-8 encoding not supported} catch (JWTCreationException e){    // Invalid signing configuration / Couldn't convert claims}

验证令牌时,您将能够获得

username
索赔并知道谁为以下对象颁发了令牌:

try {    Algorithm algorithm = Algorithm.HMAC256("secret");    JWTVerifier verifier = JWT.require(algorithm).build();    DepredJWT jwt = verifier.verify(token);    Claim usernameClaim = jwt.getClaim("username");    String username = usernameClaim.asString();} catch (UnsupportedEncodingException e){    // UTF-8 encoding not supported} catch (JWTVerificationException e){    // Invalid signature/claims}

使用JWT处理令牌刷新


接受有效(未过期)令牌进行刷新。客户有责任在

exp
索赔中指定的到期日期之前刷新令牌。

为了避免无限期刷新令牌,您可以通过向令牌添加两个声明(声明名称取决于您)来跟踪令牌刷新:

  • refreshLimit
    :指示令牌可以刷新多少次。
  • refreshCount
    :指示令牌已刷新多少次。

因此,仅在满足以下条件时才刷新令牌:

  • 令牌未过期(
    exp >= now
    )。
  • 令牌已刷新的次数少于令牌可刷新的次数(
    refreshCount < refreshLimit
    )。

当刷新令牌时:

  • 更新到期日期(
    exp = now + some-amount-of-time
    )。
  • 增加令牌已刷新(
    refreshCount++
    )的次数。

令牌签名并在服务器端验证签名后,客户端就无法篡改令牌的内容。

除了跟踪刷新次数之外,您还可以要求声明 绝对到期日期 。在此日期之前,可以接受任何数量的茶点。

另一种方法涉及发行单独的长期刷新令牌,该令牌用于发行短期JWT令牌。

最佳方法取决于您的要求。

使用JWT处理令牌吊销

如果要撤消令牌,则必须跟踪它们。您不需要将整个令牌存储在服务器端,只需存储令牌标识符(必须是唯一的)和一些元数据(如果需要)。对于令牌标识符,您可以使用UUID。

jti
权利要求应该被用来存储在令牌本身的令牌标识符。验证令牌时,通过
jti
对照服务器端的令牌标识符检查索偿值,确保未撤销令牌。

为了安全起见,请在用户更改密码时撤消该用户的所有令牌。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/414104.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号