我正在开发使用Java和AngularJS开发的Web应用程序,并选择实现令牌认证和授权 . 出于练习目的,我已经到了将证书发送到服务器,生成随机令牌存储它并将其发送回客户端的程度 . 在每次向服务器发出请求时,我都会在标头中附加令牌并且它可以正常工作 . 对于身份验证的观点是完美的,不需要更多 .
但是,我现在想要跟踪用户类型(管理员,普通用户......),以及它的id或任何其他唯一字段;据我所知,我必须在令牌中加密,我在登录操作期间将其发送回客户端 . 那是对的吗?
您是否使用过任何JWT库并可以生成,加密和解密此类令牌?将非常感谢图书馆的API和Maven依赖关系的链接 .
谢谢
9 回答
JJWT旨在最简单地使用和理解JVM和Android的JWT库:
https://github.com/jwtk/jjwt
如果有人需要答案,
我用过这个库:http://connect2id.com/products/nimbus-jose-jwt Maven:http://mvnrepository.com/artifact/com.nimbusds/nimbus-jose-jwt/2.10.1
这个库似乎运作良好:https://code.google.com/p/jsontoken/ .
这取决于Google Guava . 以下是Maven文物:
该库实际上是由Google电子钱包使用的 .
以下是如何创建一个jwt,并验证它并反序列化它:
这基于以下代码:https://developers.google.com/wallet/instant-buy/about-jwts并且在这里:https://code.google.com/p/wallet-online-sample-java/source/browse/src/com/google/wallet/online/jwt/util/WalletOnlineService.java?r=08b3333bd7260b20846d7d96d3cf15be8a128dfa
通过引用https://jwt.io/,您可以找到多种语言的
jwt
实现,包括java
. 该站点还提供了这些实现(它们支持的算法和......)之间的一些比较 .对于
java
,这些是提到的库:https://github.com/jwtk/jjwt
https://github.com/auth0/java-jwt(https://auth0.com/docs/server-apis/java的教程)
https://bitbucket.org/b_c/jose4j
https://bitbucket.org/connect2id/nimbus-jose-jwt
IETF在它的维基上建议了jose libs:http://trac.tools.ietf.org/wg/jose/trac/wiki
我强烈建议使用它们进行签名 . 我不是一个Java人,但似乎jose4j似乎是个不错的选择 . 也有很好的例子:https://bitbucket.org/b_c/jose4j/wiki/JWS%20Examples
我很想知道其他java开发者喜欢什么 .
我发现这个小而且完整https://github.com/auth0/java-jwt
此页面保留对各种语言(包括Java)的实现的引用,并比较功能:http://kjur.github.io/jsjws/index_mat.html
https://github.com/networknt/jsontoken
这是原始谷歌jsontoken的一个分支
它自2012年9月11日以来一直没有更新,取决于一些旧包装 .
我做了什么:
所有现有的单元测试都与一些新添加的测试用例一起传递 .
以下是生成令牌并验证令牌的示例 . 有关更多信息,请查看https://github.com/networknt/light源代码以了解用法 .
我是jsontoken和Omni-Channel Application Framework的作者 .
如果您只需要解析未签名的未加密令牌,则可以使用以下代码: