1

我在後端有一個Web API,前端有一個Web應用程序和電話應用程序。 我在所有三種OAuth/OpenId身份驗證上使用Auth0。 Web API和Web應用都是用ASP .Net Core 1.1 MVC編寫的。在我的Web應用程序控制器的每個API調用請求訪問令牌是否正確?

每次我從Web應用程序調用Web API時,都會向Auth0請求訪問令牌。因此,在需要我的API訪問每個控制器的動作,我有:

var client = new HttpClient(); 
       var tokenResponse = await client.PostAsync(tokenEndpoint, 
        new FormUrlEncodedContent(new List<KeyValuePair<string, string>> 
        { 
       new KeyValuePair<string, string>("grant_type", "client_credentials"),     
       new KeyValuePair<string, string>("client_id", _auth0Settings.ClientId), 
       new KeyValuePair<string, string>("client_secret", _auth0Settings.ClientSecret), 
       new KeyValuePair<string, string>("audience", _auth0Settings.ApiIdentifier), 
        })); 

這是這樣做的正確方法是什麼?還是應該在Web應用程序啓動時執行一次,然後將訪問令牌存儲在全局變量中,我可以從我的所有控制器調用該變量?

回答

2

您應該只調用一次並重用令牌。當令牌過期時,您應該使用刷新令牌請求新令牌。如果你不使用刷新標記,你應該將用戶重定向到登錄頁面以重新進行身份驗證,或者在Web應用上使用某種自動重新驗證機制。

+0

應用程序是否應該使用令牌中的過期日期檢查過期情況,或者在401或其他授權錯誤後獲取新的令牌。 –

+1

應用程序應該從web api獲得401之後的新令牌。必須在web api上檢查到期日期。我也稍微更新了我的答案.. – Stan88

相關問題