问题标签 [json-web-token]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - MEANJS:SocketIO 中的 JWT 身份验证
情况
我在我的应用程序中使用框架MEAN.JS:
对于这个应用程序的聊天,我正在使用实时 SocketIO 库:
- Socket.IO
v.1.3.5
(服务器:NodeJS) - Angular-Socket-IO
v.0.7
(客户端:AngularJS)
在这个应用程序中,有2 种登录方式:
本地:登录后,服务器返回用户对象。
另一个社交网络
OAuth 2.0
:登录后,服务器重定向到主页/#!/
。
我也在用:
- JWT-Simple
v.0.3.0
(JSON Web Token库)
我想要的是?
- 我想通过JSON Web Token对SocketIO中的用户进行身份验证以进行聊天。
JWT
第一个
在服务端,首先我们需要对用户的 JSON 对象进行编码,然后返回给客户端...JWT
TOKEN
(no code for this)
也许是这样的:
第二
客户端在 SocketIO 连接中向服务器发送相同的 accessToken
客户端:socket-io.client.factory.js
3日
服务端解码 Token 判断是否为同一用户,并将 userId 保存在 Socket 中,连接成功后加入用户聊天。
服务器:express.js
问题
我在第一部分有问题。
在我的第一个想法中,生成的令牌JWT
在登录后被发送到用户对象内的客户端。但是如果客户端通过 登录OAuth 2.0
,则此解决方案不起作用,因为服务器正在将页面重定向到主页并且不返回任何 json。我正在考虑生成一个返回此令牌的路由 API,并执行 REST 请愿以获取令牌...
我的第二个想法是服务器将令牌保存在 MongoDB(用户模式)中。而且我们总是可以轻松地访问令牌。在 angularJS 中,我们拥有Authentication.user
包含用户数据的变量,并且不需要生成新的路由 API。
我的问题是...
将服务器生成的令牌发送到客户端的最佳方式是什么
JWT
?(简单的方法,更安全)
谢谢!
类似的问题:
- MEANJS:SocketIO 中的安全性
- 使用 node.js 和 socket.io 进行套接字身份验证(使用 DaftMonk 的 generator-angular-fullstack)
- 解码 jwt 令牌 - 它安全吗?
更多参考:
access-token - 如果有人知道您的 JSON Web 令牌的密钥(签名)怎么办?
如果有人知道密钥并更改例如 json 令牌的用户名和到期时间,他们是否能够访问服务器上的安全数据?
security - JOSE jwe/jws 有效载荷
使用 JOSE 时是否可以有任何类型的有效负载?
我正在考虑做类似的事情: {"alg":"ES512", "cty":"XML" }
只需从 XML 文件中创建一个字符串,在服务器端我检查 cty 并创建 XML。
我很确定它是可能的,但是我没有看到任何示例,所以我开始认为这可能不是 jose 背后的想法,而 cty 仅表示有效载荷是 JWT 或与 jose 相关的东西。
oauth - JSON Web 令牌中的客户端 ID 或多个受众
我在我的应用程序中使用 JWT 实现 OAuth 2.0,并且无法决定将什么设置为我的aud
声明。用户将通过我的身份验证服务器“登录”到我的客户端以访问我的 API(资源)服务器。我希望我的令牌仅对特定客户端和特定 API 有效。
从我的客户端登录时,我没有将它包含client_id
在请求中,但在我发现的大多数 实现 中,设置为 that 。我倾向于在我的登录请求中包含一个客户字段,然后将令牌中的只需添加一个自定义声明,以明确声明此令牌是为特定客户端创建的。 aud
client_id
audience_id
aud
client_id
audience_id
audiences
client
我没有遇到任何在 OAuth 登录请求中同时包含 aclient_id
和(s) 的在线实现,也没有在规范中audience_id
看到保留声明。client
我在这里错过了什么吗?
在 JWT中具体说明不同client_id
的最佳实践是什么?audience_id
json-web-token - 根据 GITkit JWT idtoken 有效负载中的信息创建用户帐户?
从 JWT 有效负载中的数据开始唯一识别用户的最佳方法是什么?
我不会单独使用电子邮件地址(或它的加盐哈希)作为用户帐户的主键,因为我不确定这样做是否真的安全。
可以使用由特殊字符分隔的 user_id 和 provider_id 的串联吗?这种连接是否保证在所有“大”和“诚实”提供者中都是唯一的(我不知道 rouge 提供者是否会做坏事)?还是电子邮件地址和 provider_id 的串联?
wso2 - WSO2carbon 的 RSA 公钥
我正在从 WSOAM 生成 JWT 令牌,然后将其作为标头传递给 API。我在 nodejs 中创建了我的 API,我正在使用jsonwebtoken插件来验证和解码 JWT。
我无法找到 Wso2carbon 的 RSA 公钥来验证/解码令牌。
请帮助我如何生成 RSA 公钥或者我应该在哪里找到这个密钥?
api - JWT解密要多少钱
我正在使用 JWT 进行 API 身份验证。我只是想知道每次请求到达时解密 JWT 的成本是多少。
java - 无法在 Java 中验证 jwt 签名
我正在尝试通过验证其签名来验证 JWT 令牌。但是在验证过程中出现错误
java.security.SignatureException:签名长度不正确:得到 342 但预期为 256
. 我假设签名是sha256
数据的加密哈希。在我的情况下,数据是base64(header)+"."+base64(body)。这是我的代码:
javascript - 使用 jose4j 生成的令牌在 node.js 中使用 jsonwebtoken 验证 JWT 失败
我正在尝试使用 node.js 中的 jsonwebtoken 验证 jose4j 生成的 json Web 令牌,我看到以下错误:
[错误:PEM_read_bio_PUBKEY 失败]
jose4j 代码基本上是直接从示例中提取的:
所以在内部,令牌验证得很好。但是,当我复制令牌和密钥时(例如以下来自运行),会报告上述错误:
是否有一些我缺少的魔法(在 jose4j 或 jsonwebtoken 中)允许生成的令牌通过公钥进行验证?
附带说明一下,将令牌粘贴到 jwt.io 可以正确解码标头和有效负载,但是无法使用相同的公钥验证签名。我猜问题确实出在 jose4j 方面——但不确定。
angularjs - 无法从 Angular 中的一个 XHR 请求的标头中删除 JSON Web 令牌
我需要使用 Web 令牌进行身份验证并访问我的 REST API。我也在尝试访问天气 API,但无法访问它,因为标头正在发送 x-access-token 并且我收到此错误:
Access-Control-Allow-Headers 不允许请求标头字段 x-access-token。
我已尝试以下方法将标头令牌重置为未定义的特定请求。不幸的是,当我在浏览器控制台中检查配置对象时,用户的令牌仍然存在。请帮忙!
天气服务.js
应用程序.js
authService.js