1.我正在尝试使用nodejs中的凭据通过登录来连接azure活动目录,它已连接并且访问令牌也 生成,但访问令牌的格式为编码,
2.我参考了一些示例,但我无法解码访问令牌,请有人帮助解码我的访问令牌。
function loginres(re, res, code) {
var postcontent = {
"grant_type": "authorization_code",
"client_id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"code": re.query.code,
"redirect_uri": "http://localhost:3000/loginres",
"resource": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"client_secret": "h8MOMzGYOQXAuKaYiNtbxO1YX0rC71ZL0CkoZvTwn1w="
};
var options = {
url: 'https://login.microsoftonline.com/e2d27531-08be-4d94-91d9-c7ea460c51c9/oauth2/token',
method: 'POST',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
form: postcontent
}
httprequest(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
// Print out the response body
var data = JSON.parse(body);
var accesstoken = data['access_token'];
var decoded = jwt.decoded(accesstoken,{complete:true}); //it's not working
console.log(decoded);
// var url='http://inhance.azurewebsites.net/#WorkOrder';
console.log(body)
}
});
}
我将向您展示如何进行身份验证,以及如何检查是否经过身份验证
要进行身份验证:
exports.authentifier = function (req, res, next) {
var token = req.headers.token || req.cookies.access_token;
if (token) {
jwt.verify(token, 'mysecretmotdepassekqscqs', function (err, decoded) {
if (err) {
return res.json({
success: false
, message: 'Failed to authenticate token.'
});
}
else {
req.decoded = decoded;
next();
}
});
}
else {
return res.redirect('/signin');
}
}
并检查是否经过身份验证:
exports.isAuthenticated = function (req, callback) {
var token = "notokenprovided";
if (typeof req.headers.token !== 'undefined' && req.headers.token) {
token = req.headers.token;
}
else if (typeof req.cookies !== 'undefined' && req.cookies) {
if (typeof req.cookies.access_token !== 'undefined' && req.cookies.access_token) {
token = req.cookies.access_token
}
else {
var token = "notokenprovidedbycookies";
}
}
console.log('isAuthenticated::--------------::,', token);
// decode token
if (token) {
// verifies secret and checks exp
jwt.verify(token, 'mysecretmotdepassekqscqs', function (err, decoded) {
if (err) {
console.log('err1 wrong token ');
callback(false);
return;
}
else {
console.log('right token ');
callback(true);
return;
}
});
}
else {
console.log('err3 wrong token ');
callback(false);
return;
}
}