2017-10-16 87 views
0

1.I我試圖用我的NodeJS通過證書登錄連接蔚藍的活動目錄,它是連接和訪問令牌也產生 ,但訪問令牌被格式化爲編碼,如何將編碼轉換爲使用節點js中的jwt進行解碼?

2.I參考一些例子,但我無法解碼訪問令牌,請幫助解碼我的訪問令牌。

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

回答

1

我會告訴你如何進行身份驗證,以及如何檢查是否驗證

驗證:

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; 
     } 
    } 
相關問題