我有一個允許匿名用戶的ASP.NET Core MVC應用程序。這個程序是調用由身份服務器4.我已經創建了Identity Server的客戶端描述MVC應用程序(客戶端)的保護,給予其訪問API範圍這樣的ASP.NET Web API:使用客戶端證書持久化令牌的最佳實踐流程
new Client
{
ClientId = "my-mvc-client-app",
AllowedGrantTypes = GrantTypes.ClientCredentials,
RequireConsent = false,
ClientSecrets = new List<Secret> { new Secret("this-is-my-secret".Sha256()) },
AllowedScopes = new List<string>
{
StandardScopes.OpenId.Name,
StandardScopes.Profile.Name,
StandardScopes.OfflineAccess.Name,
"my-protected-api"
},
RedirectUris = new List<string>
{
"http://localhost:5009/signin-oidc",
}
}
在我的MVC應用程序,我使用TokenClient
獲得令牌發出請求,以這樣的受保護的API時,我可以使用:
var disco = await DiscoveryClient.GetAsync("http://localhost:5010");
var tokenClient = new TokenClient(disco.TokenEndpoint, clientId, clientSecret);
var tokenResponse = await tokenClient.RequestClientCredentialsAsync("hrmts-test-candidate-api-scope");
這工作得很好,但我請求來自Identity Server的新令牌在每個請求上,這可能不是一個好主意。
處理令牌的最佳做法是什麼?我如何將它們保存在客戶端(MVC應用程序)上,以及如何處理刷新令牌以確保客戶端在必要時獲取新令牌?
我喜歡這種方法,但是,如果這是作爲一個單身人士的範圍是這個實現線程安全和可重入安全嗎? – LugTread