我實現使用上Thinktecture IdentityServer的頂部wsfederation插件wsfed認證,我有我自己的UserService與AuthenticateLocalAsync方法來實現如下可以IdentityServer返回的權利要求身份驗證請求
public async Task<AuthenticateResult> AuthenticateLocalAsync(string username, string password, SignInMessage message)
{
var requestViewModel = new SignInRequestViewModel
{
EmailAddress = username,
Password = password
};
var result = await signInApplicationService.SignInAsync(requestViewModel);
var responseViewModel = result.ViewModel;
var claims = claimBuilder.GetClaims(responseViewModel);
return new AuthenticateResult(
responseViewModel.CustomerId.ToString(),
string.Format("{0} {1}", responseViewModel.FirstName, responseViewModel.LastName),
claims);
}
這種方法的一部分被調用時,登錄事件被觸發,正如你所看到的那樣,我對照我自己的數據庫存儲庫對用戶進行了身份驗證,然後從結果中我建立了在AuthenticateResult
對象中引用的聲明對象並返回。
因此,我認爲,這些索賠現在應可在客戶端上,所以沒必要做進一步的要求,但它實際上使自己第二次請求該GetProfileDataAsync
方法被調用,並根據文件:
每當要求提供有關用戶權利這種方法被稱爲 (如在令牌創建或通過用戶信息端點
這還挺決策意識,但它意味着,我需要再次打電話給我的數據庫檢索客戶數據再次重建聲稱與我在AuthenticateLocalAsync
方法中所做的相同?
如果是這樣,那麼在第一個驗證方法中通過聲明有什麼意義?
有人可以解釋一下嗎?
感謝
明