2017-07-30 144 views
0

我正在使用帶承載策略的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,我應該設置與我的租戶相匹配並獲取我正在查找的訪問令牌?

回答

0

您請求什麼存取令牌?例如,如果訪問令牌旨在用於Microsoft Graph,則它是Graph的任務來驗證它們,而不是您的應用程序的。 你可以擴展你想要實現的確切場景,以及在什麼時候需要刷新id_tokens?

+0

你對圖訪問令牌是正確的。對於我如何爲AAD租戶獲取訪問令牌仍然有點困惑,並在我的原始問題中添加了更多信息。 –

相關問題