**已关闭。**此问题正在寻求书籍、工具、软件库等的建议。它不符合Stack Overflow guidelines。目前不接受答复。
我们不允许问题寻求书籍,工具,软件库等的建议。您可以编辑问题,以便可以用事实和引用来回答。
3年前关闭。
Improve this question
我正在使用Java和AngularJS开发一个Web应用程序,并选择实现令牌身份验证和授权。出于练习的目的,我已经到了将凭证发送到服务器、生成随机令牌并存储它并将其发送回客户机的地步。在每次请求服务器时,我都会在头中附加令牌,它工作得很好。对于身份验证的观点是完美的,不需要更多。
但是,我现在想跟踪用户类型(admin,regular user…),以及它的id,或任何其他唯一字段;正如我所理解的,我必须在登录操作期间将其加密在我发送回客户端的令牌中。对吗?
您是否使用过任何可以生成、加密和解密此类令牌的JWT库?如果能提供一个到库的API和Maven依赖项的链接,将不胜感激。
谢谢
9条答案
按热度按时间eqoofvh91#
JJWT旨在成为JVM和Android上最容易使用和理解的JWT库:
https://github.com/jwtk/jjwt
yiytaume2#
如果有人想知道答案,
我使用了这个库:http://connect2id.com/products/nimbus-jose-jwt Maven在这里:http://mvnrepository.com/artifact/com.nimbusds/nimbus-jose-jwt/2.10.1
jckbn6z73#
通过引用https://jwt.io/,您可以找到许多语言中的
jwt
实现,包括java
。该网站还提供了这些实现之间的一些比较(它们支持的算法和....)。对于
java
,这些是提到的库:qybjjes14#
这个库看起来很好用:https://code.google.com/p/jsontoken/。
这取决于Google Guava。以下是Maven工件:
该库实际上被Google Wallet使用。
下面是如何创建一个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
vltsax255#
IETF在其wiki上建议使用Jose libs:http://trac.tools.ietf.org/wg/jose/trac/wiki
我强烈推荐使用它们来签名。我不是一个Java的家伙,但似乎jose 4j似乎是一个不错的选择。也有很好的例子:https://bitbucket.org/b_c/jose4j/wiki/JWS%20Examples
更新:jwt.io提供了几个jwt相关库及其特性的简洁比较。一个必须检查!
我很想听听其他java开发者喜欢什么。
snvhrwxg6#
我发现这是小而完整的https://github.com/auth0/java-jwt
31moq8wy7#
本页保留了对各种语言(包括Java)实现的引用,并比较了功能:http://kjur.github.io/jsjws/index_mat.html
r7s23pms8#
如果您只需要解析未签名的未加密令牌,则可以使用以下代码:
xkrw2x1b9#
https://github.com/networknt/jsontoken
这是一个原始的谷歌jsontoken的分支
自2012年9月11日以来尚未更新,并且依赖于一些旧软件包。
我所做的:
所有现有的单元测试沿着一些新添加的测试用例均通过。
下面是生成令牌并验证令牌的示例。有关更多信息,请查看https://github.com/networknt/light源代码的用法。
我是jsontoken和Omni-Channel Application Framework的作者。