1

我使用jwt.io驗證我的天藍色廣告訪問令牌時收到無效簽名。然而,我的id令牌,驗證就好!驗證Azure廣告訪問令牌時簽名無效,但id令牌有效

我已經看到,並試圖對我的訪問令牌
Invalid signature while validating Azure ad access token

https://nicksnettravels.builttoroam.com/post/2017/01/24/Verifying-Azure-Active-Directory-JWT-Tokens.aspx
提出的解決方案,但沒有工作。

的通道和ID令牌通過Adal.js產生:

var endpoints = { 
     "https://graph.windows.net": "https://graph.windows.net" 
    }; 
    var configOptions = { 
     tenant: "<ad>.onmicrosoft.com", // Optional by default, it sends common 
     clientId: "<app ID from azure portal>", 
     postLogoutRedirectUri: window.location.origin, 
     endpoints: endpoints, 
    } 
    window.authContext = new AuthenticationContext(configOptions); 

爲什麼我可以驗證我的ID令牌,但不是我的訪問令牌?

+0

訪問令牌由三個部分以句號(。)分隔嗎? – RasmusW

+0

請解碼訪問令牌,您是否在HEADER中看到過亂碼? –

+0

@RasmusW這兩個標記的格式都正確,我沒有任何問題解碼每個信息。只有驗證是一個問題。 – Jeppe

回答

1

請參考線:https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/609

,但如果看看Jwt.Header你會看到一個 '現時'。這意味着您需要特殊處理。正常處理將失敗。

所以,如果現時包括訪問令牌,驗證簽名用JWT.io或JwtSecurityToken不會成功。

+0

謝謝,所以我沒有辦法驗證訪問令牌呢? – Jeppe

+0

請提供令牌請求(刪除敏感信息,如tenant &&客戶端id),您可以使用fiddler或瀏覽器開發者工具來捕獲請求,我會檢查爲什麼nonce包含在標頭中。另外,您不需要驗證aad圖api的訪問令牌的簽名。使用azure廣告訪問令牌發送api調用時,圖形api服務器端將驗證它。如果您爲自己的api獲取令牌,則可以使用owin中間件驗證訪問令牌或手動驗證JWT令牌。 –