如何在节点 JS 中使用 JWT 将编码转换为解码



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;
        }
    }

最新更新