我想生成忘记密码的标识符.我读过我可以通过使用带有mt_rand()的时间戳来做到这一点,但有些人说时间戳可能不是每次都是唯一的.所以我在这里有点困惑.我可以使用时间戳吗?
问题
生成自定义长度的随机/唯一标记的最佳做法是什么?
我知道这里有很多问题,但是在阅读了不同的人的不同意见后,我变得更加困惑.
如何在本地身份验证后,将本地护照与JWT令牌结合使用?
我想使用node-jwt-simple并查看passport.js我不知道该怎么做.
var passport = require('passport')
, LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function(err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
Run Code Online (Sandbox Code Playgroud)
调用done()时是否可以返回令牌?像这样......(只是伪代码)
if(User.validCredentials(username, password)) {
var token = jwt.encode({username: username}, tokenSecret);
done(null, {token : token}); //is this possible? …Run Code Online (Sandbox Code Playgroud) 在我们的网站上,我们根据用户的私人信息(通过表格提供)向用户提供模拟.我们希望以后允许他们重新使用他们的模拟结果,但不要强迫他们创建登录/密码帐户.
我们曾想过给他们发送一封带有链接的电子邮件,他们可以从中获取结果.但是,当然,我们必须保护此URL,因为私有数据受到威胁.
因此,我们打算在URL中传递令牌(如字母和数字的40个字符组合,或MD5哈希)并使用SSL.
最后,他们会收到这样的电子邮件:
您好,
请在https://www.example.com/load_simulation?token=uZVTLBCWcw33RIhvnbxTKxTxM2rKJ7YJrwyUXhXn上取回您的搜索结果
你怎么看待这件事?它足够安全吗?你会为我的令牌生成提出什么建议?如何在https请求中传递URL参数?
我正在学习像Basic,Digest,OAuth2.0,JWT和Bearer Token这样的授权.
现在我有一个问题.
您知道JWT在OAuth2.0标准中被用作Access_Token.JWT出现在RFC 7519中,而Bearer Token出现在RFC 6750中.
例如,持票人:
Authorization: Bearer <token>
Run Code Online (Sandbox Code Playgroud)
我曾经通过AJAX向服务器发送令牌或者将令牌添加到url的查询字符串中.我知道也可以通过将令牌添加到请求标头来发送令牌.这是否意味着应该将令牌添加到Authorization Bearer标头?
你能告诉我JWT和Bearer Token之间的关系吗?非常感谢.
为了生成32个字符的令牌以访问我们目前使用的API,我们目前使用:
$token = md5(uniqid(mt_rand(), true));
Run Code Online (Sandbox Code Playgroud)
我已经读过这种方法不是加密安全的,因为它基于系统时钟,这openssl_random_pseudo_bytes将是一个更好的解决方案,因为它更难预测.
如果是这种情况,等效代码会是什么样的?
我推测这样的事情,但我不知道这是不对的......
$token = md5(openssl_random_pseudo_bytes(32));
Run Code Online (Sandbox Code Playgroud)
我应该传递给函数的长度是多少?
我正在尝试使用Apache Lucene进行标记,我对从一个获取令牌的过程感到困惑TokenStream.
最糟糕的是,我正在查看解决我的问题的JavaDocs中的注释.
不知何故,AttributeSource应该使用an 而不是Tokens.我完全不知所措.
任何人都可以解释如何从TokenStream获取类似令牌的信息吗?
我无法使用我的代码获取刷新令牌.我只能获得我的访问令牌,令牌类型等,我已经按照一些教程,比如access_type=offline输入我的登录URL:
echo "<a href='https://accounts.google.com/o/oauth2/auth?"
. "access_type=offline&client_id=123345555.apps.googleusercontent.com& "
. "scope=https://www.googleapis.com/auth/calendar+https://www.googleapis.com/auth/plus.me&response_type=code& "
. "redirect_uri=http://www.sample.com/sample.php&state=/profile'>Google</a>";
Run Code Online (Sandbox Code Playgroud)
以及我获取访问令牌的字段:
$fields=array(
'code'=> urlencode($authcode),
'client_id'=> urlencode($clientid),
'client_secret'=> urlencode($clientsecret),
'redirect_uri'=> urlencode($redirecturi),
'grant_type'=> 'authorization_code',
);
Run Code Online (Sandbox Code Playgroud)
但是我无法获得refresh_token,只有access_token,token_type,id_token和expires_in.
我有一个请求URI和一个令牌.如果我使用:
curl -s "<MY_URI>" -H "Authorization: TOK:<MY_TOKEN>"
Run Code Online (Sandbox Code Playgroud)
等,我得到一个200并查看相应的JSON数据.所以,我安装了请求,当我尝试访问此资源时,我得到403可能是因为我不知道传递该令牌的正确语法.任何人都可以帮我搞清楚吗?这就是我所拥有的:
import sys,socket
import requests
r = requests.get('<MY_URI>','<MY_TOKEN>')
r. status_code
Run Code Online (Sandbox Code Playgroud)
我已经尝试过:
r = requests.get('<MY_URI>',auth=('<MY_TOKEN>'))
r = requests.get('<MY_URI>',auth=('TOK','<MY_TOKEN>'))
r = requests.get('<MY_URI>',headers=('Authorization: TOK:<MY_TOKEN>'))
Run Code Online (Sandbox Code Playgroud)
但这些都不起作用.
在我的反应应用程序中,我使用axios来执行REST api请求.
但它无法使用请求发送Authorization标头.
这是我的代码:
tokenPayload() {
let config = {
headers: {
'Authorization': 'Bearer ' + validToken()
}
}
Axios.post(
'http://localhost:8000/api/v1/get_token_payloads',
config
)
.then( ( response ) => {
console.log( response )
} )
.catch()
}
Run Code Online (Sandbox Code Playgroud)
这里的validToken()方法只是从浏览器存储中返回令牌.
所有请求都有500错误回复说
无法从请求中解析令牌
从后端.
如何使用每个请求发送授权标头?你会推荐其他任何反应模块吗?
我正在开发使用Java和AngularJS开发的Web应用程序,并选择实现令牌认证和授权.出于练习目的,我已经到了将证书发送到服务器,生成随机令牌存储它并将其发送回客户端的程度.在每次向服务器发出请求时,我都会在标头中附加令牌并且它可以正常工作.对于身份验证的观点是完美的,不需要更多.
但是,我现在想要跟踪用户类型(管理员,普通用户......),以及它的id或任何其他唯一字段; 据我所知,我必须在令牌中加密,我在登录操作期间将其发送回客户端.那是对的吗?
您是否使用过任何JWT库并可以生成,加密和解密此类令牌?将非常感谢图书馆的API和Maven依赖关系的链接.
谢谢