Json Web 令牌 JWT

Posted

技术标签:

【中文标题】Json Web 令牌 JWT【英文标题】:Json Web Token JWT 【发布时间】:2016-08-01 18:53:29 【问题描述】:

我正在尝试通过使用 JSON Web Tokens (JWT) 来实现身份验证。我在 google 和 GitHub 中进行了很多搜索,但没有发现任何有用的信息。在 JWT(json web token)或公共 API 上是否有任何可用于测试目的的预构建 Web 服务?

【问题讨论】:

您使用的是哪个框架?有很多库可以处理 JWT,客户端就像服务器端一样。例如,您可以浏览auth0's github account。 你可以从github.com/brijeshmavani/JWTWebAPI看到它 【参考方案1】:

我不知道你是否可以在互联网上找到一些练习。但是我有一些使用 JWT 的例子。

基本上,您可以让 I 类具有两种方法:一种方法用于生成 Toke,另一种方法用于验证作为参数传递的令牌:

public class JwtToken 
private static final Key secret = MacProvider.generateKey(SignatureAlgorithm.HS256);
    private static final byte[] secretBytes = secret.getEncoded();
    private static final String base64SecretBytes = Base64.getEncoder().encodeToString(secretBytes);

    public static String generateToken(Login login) 
        Date now = new Date();
        Date exp = new Date();

        String token = Jwts.builder()
            .setId(login.getCpf())
            .setIssuedAt(now)
            .setNotBefore(now)
            .setExpiration(exp)
            .signWith(SignatureAlgorithm.HS256, base64SecretBytes)
            .compact();

        return token;
    

    public static boolean verifyToken(String token) 
        try 
            Claims claims = Jwts.parser().setSigningKey(base64SecretBytes).parseClaimsJws(token).getBody();
            return true;
         catch (Exception e) 
            // TODO Auto-generated catch block
            e.printStackTrace();
        
        return false;
    

【讨论】:

【参考方案2】:

如果您需要使用 JSON Web 令牌进行身份验证,您可以使用此 seed。 这个种子已经使用本地护照策略实现了注册和登录功能。

您只需要开发您的客户端 UI。

【讨论】:

【参考方案3】:

您的问题对于您究竟想将 JWT 用于什么和 With 的问题非常模糊,因此请阅读有关如何正确提问here 的内容。

不过,我会说,以下指南或许可以帮助您将 JWT 实施到您自己的系统中。它是 Node.JS 的指南,它逐步解释了你在做什么以及你的代码在做什么。

Node.js API with JWT authentication

这将允许您快速设置自己的服务器和 API 以进行测试。 不过里面有很多信息,你应该可以找到的。

【讨论】:

以上是关于Json Web 令牌 JWT的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中解码 JWT(JSON Web 令牌)令牌?

为什么令牌上有JWT(JSON Web令牌)前缀?回复:JsonWebTokenError:无效令牌

Json Web 令牌 JWT

Express、Passport 和 JSON Web 令牌 (jwt) 身份验证

如何将JSON Web令牌(JWT)传递给get请求

如何以安全的方式为客户提供 JSON Web 令牌(JWT)?