簡體   English   中英

Azure AD B2C刷新令牌已撤銷403

[英]Azure AD B2C Refresh Token Revoked 403

大家,早安,

我在Azure中設置了一個App Service,並通過Azure AD B2C添加了身份驗證。 到目前為止,一切都很好。 但是,1小時后,當令牌過期時,我嘗試刷新它,但后來我得到一個錯誤,即刷新令牌已被撤銷。 這里出了什么問題? 我已經設置了后端,就像在這篇文章中解釋的那樣:當登錄時我傳遞了附加參數,如下所示:

user = await Manager.CurrentClient.LoginAsync(currentContext,MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory,new Dictionary<string, string>() { { "response_type", "code id_token" } });

這是我的刷新代碼:

user = await Manager.CurrentClient.RefreshUserAsync();

這是我得到的錯誤

{Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException:刷新失敗,出現403 Forbidden錯誤。 刷新令牌已被撤銷或過期。 ---> Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException:您無權查看此目錄或頁面。 在Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient + d__24.MoveNext()[0x001ec] in:0

我在這里錯過了什么嗎? 謝謝

編輯:這是門戶中設置的屏幕截圖 Azure設置

編輯2:這是在嘗試刷新令牌時服務器記錄的錯誤形式: 錯誤

編輯3:這里是來自網絡服務器的應用程序日志,用於給定的請求:

2017-01-18T15:08:33 PID [6344]詳細收到請求:GET https://api.near.lu/.auth/refresh 2017-01-18T15:08:33 PID [6344]詳細JWT驗證成功。 主題:'sid:453a1ad2710466bc9873240e888d8b91',發行人:' https ://api.near.lu/'。 2017-01-18T15:08:33 PID [6344]警告sid:453a1ad2710466bc9873240e888d8b91(SID:ac22f7309036f0c07a54b1299b9601ef)發出的刷新請求失敗,因為在令牌存儲區中未找到刷新令牌。 2017-01-18T15:08:33 PID [6344]信息發送回復:403.80 Forbidden 2017-01-18T15:08:34 PID [6344]詳細收到請求:獲取https://api.near.lu/.auth/ login / aad?response_type = code%20id_token 2017-01-18T15:08:34 PID [6344]詳細下載來自https://login.microsoftonline.com/nearauth.onmicrosoft.com/v2.0/.well-的 OpenID配置已知/ openid-configuration?p = B2C_1_Default 2017-01-18T15:08:36 PID [6344]詳細下載OpenID發行人密鑰來自https://login.microsoftonline.com/nearauth.onmicrosoft.com/discovery/v2.0/密鑰?p = b2c_1_default 2017-01-18T15:08:37 PID [6344]信息重定向: https//login.microsoftonline.com/nearauth.onmicrosoft.com/oauth2/v2.0/authorize ?response_type = code+id_token&redirect_uri = HTTPS%3A%2F%2Fapi.near.lu%2F.auth%2Flogin%2Faad%2Fcallback&CLIENT_ID = c4c15bfb-eac4-4cdc-861f-eb01594e19d2&范圍=的OpenID +輪廓+電子郵件&response_mode = form_post&狀態=再導向%3D%26b2cPolicy%3D&p = b2c_1_default&隨機數= 9e243549b62f49878cc370048c6effa9_20170118151334 2017- 01-18T15:08:39 PID [6344]詳細收到請求:POST https://api.near.lu/.auth/login/aad/callback 2017-01-18T15:08:39 PID [6344]錯誤錯誤在登錄過程中發生'unauthorized_client'類型:'AADB2C90057:提供的應用程序未配置為允許OAuth Implicit流。 相關ID:8336662f-8847-4f8b-bb37-6925a5d3e264時間戳:2017-01-18 15:08:38Z'2017-01-18T15:08:39 PID [6344]信息發送回復:401.73未經授權

編輯4:這是成功登錄的日志:

2017-01-18T19:10:14 PID [6344]詳細收到請求:GET https://api.near.lu/.auth/login/aad?response_type=code%20id_token 2017-01-18T19:10:14 PID [6344]信息重定向: https ://login.microsoftonline.com/nearauth.onmicrosoft.com/oauth2/v2.0/authorize?response_type = code+id_token&redirect_uri =https% 3A%2F%2Fapi.near.lu%2F 。 auth%2Flogin%2Faad%2Fcallback&client_id = c4c15bfb-eac4-4cdc-861f-eb01594e19d2&scope = openid + profile + email&response_mode = form_post&state = redir%3D%26b2cPolicy%3D&p = b2c_1_default&nonce = 817be561f67343688001637fa7808690_20170118191514 2017-01-18T19:10:3​​0 PID [6344]詳細收到請求:POST https://api.near.lu/.auth/login/aad/callback 2017-01-18T19:10:3​​0 PID [6344]詳細JWT驗證成功。 主題:'1eaf9f41-1562-4ac9-9538-b893c9123087',發行人:' https ://login.microsoftonline.com/07407dc1-946a-4afc-9186-84e6023ba814/v2.0/'。 2017-01-18T19:10:3​​0 PID [6344]詳細調用外部HTTP端點POST https://login.microsoftonline.com/nearauth.onmicrosoft.com/oauth2/v2.0/token 2017-01-18T19:10:3​​2 PID [6344]信息登錄已完成'aget'。 提供者:'aad'。 2017-01-18T19:10:3​​2 PID [6344]詳細為網站'api.near.lu'編寫'AppServiceAuthSession'cookie。 長度:792。2017-01-18T19:10:3​​2 PID [6344]信息重定向: https//api.near.lu/.auth/login/done#token=%7B%22authenticationToken%22%3A%22ey- -REMOVED部分令牌 - %22%2C%22user%22%3A%7B%22userId%22%3A%22sid%3Aed01ed7507f147976aa1704783267861%22%7D%7D 2017-01-18T19:10:3​​3 PID [6344]詳細收到請求:GET https://api.near.lu/.auth/login/done 2017-01-18T19:10:3​​3 PID [6344]信息發送回復:200.0確定

這是我在登錄后嘗試刷新immediatley時得到的錯誤日志:

2017-01-23T10:55:06 PID [6344]詳細收到請求:POST https://api.near.lu/.auth/refresh 2017-01-23T10:55:06 PID [6344]詳細JWT驗證成功。 主題:'sid:ed01ed7507f147976aa1704783267861',發行人:' https ://api.near.lu/'。 2017-01-23T10:55:06 PID [6344]警告由sid:ed01ed7507f147976aa1704783267861(SID:9a6c2ee324a092937c5e2f953803e662)發出的刷新請求失敗,因為在令牌存儲區中未找到刷新令牌。 2017-01-23T10:55:06 PID [6344]信息發送回復:403.80禁止

這很奇怪,因為在上圖中可以看到令牌存儲已啟用...

問題可能是您當前的App Service身份驗證/授權設置未配置為支持令牌刷新。 確認這一點的一種簡單方法是啟用應用程序日志記錄,並在刷新操作失敗時查看應用程序日志流中的警告消息。 有關應用程序日志記錄的更多詳細信息,請訪問: https//docs.microsoft.com/en-us/azure/app-service-web/web-sites-enable-diagnostic-log

請參閱以下博文(我寫的)以了解有關如何更新身份驗證/授權設置以支持令牌刷新的更多信息: https//cgillum.tech/2016/08/10/app-service-auth-and-azure -ad-b2c-part-2 /#refresh 簡短版本是您需要:

  1. 在B2C應用程序注冊中創建一個應用程序密鑰,並將其設置為門戶中AAD的身份驗證/授權“高級”設置中的客戶端密鑰。
  2. 登錄時請求offline_access范圍。這可確保您在用戶登錄時從AAD B2C獲取刷新令牌。

您的登錄代碼應如下所示:

user = await Manager.CurrentClient.LoginAsync(
    currentContext,
    MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory,
    new Dictionary<string, string>() { { "scope", "openid offline_access" } });

要使用刷新用戶,我們必須將刷新令牌存儲到應用服務令牌存儲中。

您可以使用以下請求檢查是否有刷新令牌:

Get:https://{yourMoibleAppName}.azurewebsites.net/.auth/me
X-ZUMO-AUTH: {accessToken}

您可以從user.MobileServiceAuthenticationToken獲取訪問令牌。

如果沒有返回刷新令牌,您可以檢查是否滿足以下要求:

  1. 令牌存儲已啟用

  2. 請求的response_type包含代碼

  3. 開發人員不會撤消access_token,refresh_token,用戶權限

並且所有設置都很好,但是應用程序仍然會收到403錯誤,我們應該提示用戶再次登錄(請參閱在App Service Mobile Apps中刷新用戶登錄 )。

為了避免誤解,當您指定使用Azure AD B2C租戶時,您是否介意共享保護移動服務的詳細步驟?

更新(能夠使用以這種方式注冊的b2c應用程序重現此發布)

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM