我正在使用帶承載策略的Passport AAD project來保護我的端點。當我登錄時收到帶有OIDC策略的令牌後,似乎無法獲得承載策略來驗證訪問令牌的簽名。我得到:對Azure Active Directory訪問令牌使用承載驗證
authentication failed due to: invalid signature
我沒有問題驗證id_token,但我寧願不使用這個爲我們客戶端應用程序,如果id_token不能與AAD刷新。另外,當使用jwt.io來測試published public keys的驗證時,我看到了同樣的問題(可以驗證id_token,但不驗證access_token)。
我是否在抓取訪問令牌時錯過了一個步驟,或者我對理解訪問令牌的驗證方式存在差距?
更新更多的細節
我請求訪問令牌從我的租客:
identityMetadata: https://login.microsoftonline.com/your_tenant_name.onmicrosoft.com/.well-known/openid-configuration,
responseType: 'id_token code'
在AAD護照項目使用OIDCStrategy。
const callbackOIDC = (iss, sub, profile, accessToken, refreshToken, params, done) => {
return done(null,{
profile,
accessToken,
refreshToken
});
};
passport.use(new OIDCStrategy(config.creds, callbackOIDC));
然後我運行驗證,如下圖所示:
auth.adCallback = function (req, res, next) {
passport.authenticate('azuread-openidconnect', {
response: res,
resourceURL: 'https://graph.microsoft.com',
session: false
}, function (err, user, info) {
console.log(user.access_token);
})(req, res, next);
};
我想我可能已經被指定資源URL請求圖形存取令牌上面。如果我刪除該資源URL,我仍然會得到一個訪問令牌,但承載策略會引發無效令牌錯誤(而不是無效簽名錯誤)。是否有一個不同的資源URL,我應該設置與我的租戶相匹配並獲取我正在查找的訪問令牌?
你對圖訪問令牌是正確的。對於我如何爲AAD租戶獲取訪問令牌仍然有點困惑,並在我的原始問題中添加了更多信息。 –