- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近了解了 Json Web Token (JWT)。因为我喜欢它的工作原理,所以我开始在我的项目中实现它。我的项目涉及两个应用程序进行通信。一个是 android 应用程序,另一个是 Laravel 网络应用程序。
移动应用程序在服务器端验证用户凭据后登录。
我已将用户名和密码从移动应用程序发送到服务器,并且已获得字符串格式的 JWT。但从这一点开始,我找不到收集 JWT 内容的方法。
我已经浏览了几乎所有可能显示的内容(谷歌搜索结果),但我无法获取内容、签名和标题。
我进一步了解的方法之一是使用以下代码,注意我已经删除了 setSigningKey():
try {
Claims claims = Jwts.parser().parseClaimsJwt(jwtHeaderAndClaim).getBody();
System.out.println("ID of the claims: " + claims.getId().toString());
}catch (Exception e){
Log.e("Exception: ", e.toString());
}
上面的代码会产生以下错误:
Exception: io.jsonwebtoken.PrematureJwtException: JWT must not be accepted before 2016-06-14T10:20:09+0300. Current time: 2016-06-14T10:19:37+0300´
jwtHeaderAndClaim 是仅删除签名部分后的 JWT 字符串(即:“xxxxxx.yyyyyyyy.”)。如果我将 jwtString (xxxxxxx.yyyyyyyy.ccccccc) 而不是 jwtHeaderAndClaim,则会发生以下错误:
Exception: io.jsonwebtoken.UnsupportedJwtException: Signed JWSs are not supported
如果我按照 stormpath example 中所示放置 setSigningKey :
Claims claims = Jwts.parser().setSigningKey(DatatypeConverter.parseBase64Binary(apiKey.getSecret())).parseClaimsJwt(jwtString).getBody();.
上面的代码不会工作有两个原因:1.我没有图书馆 导入 javax.xml.bind.DatatypeConverter;2.我不知道怎么拿到 key 。
但是知道我不需要 key ,因为这次我尝试登录并收集用户信息(如名字、姓氏、电话等)和签名( token ),以便下次我发送要存储到服务器端的数据我有 token 可以访问后端。
谁能帮帮我?
最佳答案
你有很多问题。我试着回答其中的一些
io.jsonwebtoken.PrematureJwtException: JWT must not be accepted before 2016-06-14T10:20:09+0300. Current time: 2016-06-14T10:19:37+0300´
您正在 JWT 中使用 nbf(不是之前)属性。不要使用它(它是可选的)或设置一个有效范围,因为设备的时钟将不同步
来自 RFC 7519
The "nbf" (not before) claim identifies the time before which the JWT MUST NOT be accepted for processing. The processing of the "nbf" claim requires that the current date/time MUST be after or equal to the not-before date/time listed in the "nbf" claim. Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew. Its value MUST be a number containing a NumericDate value. Use of this claim is OPTIONAL.
签署 JWS
Exception: io.jsonwebtoken.UnsupportedJwtException: Signed JWSs are not supported
您想在客户端或服务器端验证签名 key 吗?如果您使用 JWT 代替用户和密码进行身份验证,并且您在每个请求中发送 token ,您可以在服务器端验证签名。
如果要在应用程序上验证 key ,请不要使用对称 key ,因为如果落入坏人之手,它可能会成为一个很大的漏洞。 See .您可以使用和非对称 key 对。使用私钥在服务器中签署 JWT,并使用公钥在设备上进行验证。
- I don't have the library import javax.xml.bind.DatatypeConverter
String base64 = Base64.encodeToString(data, Base64.DEFAULT);
byte[] data = Base64.decode(base64, Base64.DEFAULT);
- I don't know how to get the key.
您的 key 可能是通过这种方式在服务器端生成的
Key key = MacProvider.generateKey(SignatureAlgorithm.HS256);
byte data[] = key.getEncoded();
以您喜欢的方式向客户端提供 key data[]
。使用非对称 key ,您只需提供公钥。
KeyPair keyPair = RsaProvider.generateKeyPair();
byte data[] = keyPair.getPublic().getEncoded();
关于java - 如何在 Android 上从 JWT 收集签名、 header 和正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37806270/
引用网址 http://hi.baidu.com/quiteuniverse/blog/item/9f3f043d46ad1e07bba16716.html 以下函数调用方式:&nbs
我什至不确定如何描述我正在尝试做的事情,因为我对 cookie 了解不多,但就这样吧。 是否可以使用PHP从浏览器缓存中收集一个cookie(或cookie文件),将其保存到数据库中,然后清除缓存并重
我正在使用 Room(v. 2.2.1)和协程支持(v. 1.3.2)并进行以下设置 @Entity(tableName = "simple_table") data class SimpleEnti
我正在尝试编写一个基于时间运算符收集/累积值的规则。 rule "Zone6 Overlap" when $i1 : Instance ($e1 : event == " Vel : 20.9
我有一个简单的 BST,定义了节点结构: struct node { int key_value; struct node *left; struct node *right; }; ty
我有这个对象: public class MenuPriceByDay implements Serializable { private BigDecimal avgPrice; p
我正在开发一个应用程序,需要访问给定传感器的“最后 5 秒有值(value)的数据”。我的计划是以某种方式存储这些数据,然后当我请求数据时,它将返回最近 5 秒内获得的所有数据。鉴于以下情况,我不确定
在 Ruby 中,您可以对数组使用 map/collect 方法来修改它: a = [ "a", "b", "c", "d" ] a.collect! {|x| x + "!" } a
我即将开始实时收集大量数字数据(对于那些感兴趣的人,各种股票和 future 的出价/要价/最后或“磁带”)。稍后将检索数据以进行分析和模拟。这一点都不难,但我想高效地做到这一点,这会带来很多问题。我
我提出这个问题是为了寻求有关如何设计系统的实用建议。 像 amazon.com 和 pandora 这样的网站拥有并维护着庞大的数据集来运行他们的核心业务。例如,亚马逊(以及所有其他主要电子商务网站)
假设我们有一个数据数组和另一个带索引的数组。 data = [1, 2, 3, 4, 5, 7] index = [5, 1, 4, 0, 2, 3] 我们想从 index 的 data 元素创建一个
好的,我已经阅读了几个关于它的主题,但现在就开始吧。假设我有一个应用程序,基本上我会时不时地点击一个按钮,几分钟内会发生很多事情,然后它可能会再闲置一个小时,或者可能只是 1 分钟。难道不是在整个结束
我有一个数据框,例如 Seq Chrm start end length score 0 A C1 1 50 49 12 1 B
我正在考虑在 Object[] 数组中收集泛型方法的所有方法参数以进行记录。我知道使用方面可以更好地实现这一点,但是我不允许使用它,并且如果可能的话我正在寻找一种基于纯反射的方法 为了澄清, 假设一个
快速提问: 如果 Socket 对象(及其本地缓存的 InputStream 和 OutputStream 对象)超出范围并被垃圾收集,连接是否在 JVM 中保持打开状态? (即,不会在监听服务器上抛
是否有用于收集 facebook 公共(public)数据作为实时提要的 API。我阅读了关于用于收集数据的公共(public)提要 API,但我现在不能申请,而且它不是免费的,还有 Open str
摘要 :我使用自定义收集器收集给定搜索的所有命中的文档 ID(它使用 ID 填充 BitSet)。根据我的需要,搜索和获取文档 ID 的速度非常快,但是当涉及到从磁盘实际获取文档时,事情变得非常缓慢。
我正在寻找一种方法来从自定义 Gradle 插件收集给定项目的所有依赖约束(通过常规 platform 和/或 enforcedPlatform 和/或“手动”强制执行)。 在 Maven 世界中,您
我有一个 CSV 格式的用户列表,但我需要按广告中的名称从每个用户收集 SamAccount 属性。 CSV 模型 脚本 Get-ADObject -Filter 'ObjectClass -eq "
我得到了一个非常大的列表,其中包含大约 200 个带有文本和图像的项目。 ng-repeat 是一种缓慢渲染的方式。它尝试过这个 solution 。效果很好。但不适合重复收集。 我的网络服务返回此:
我是一名优秀的程序员,十分优秀!