2017-08-03 80 views
1

請仔細閱讀這一點,因爲我敢肯定人們會回答一個不同的問題,我正在問。我有一個IdentityServer4服務器,它允許用戶三種身份驗證方法(我們現在有多個真相源):自定義(SQL中的userid/pwd),ldap(AD中的用戶/密碼)&集成的Windows(沒有密碼要求)。這些工作很可愛,當我在我的客戶端MVC應用程序中時,無論使用哪種方法進行身份驗證,我都可以獲得身份和聲明。確定身份IdentityServer4 *服務器*

我的問題是我如何理解哪個用戶登錄到SERVER(而不是客戶端MVC!)。我可以看到服務器正在維護cookies,它必須包含這些信息。請記住,User.Identity.Name將在它們「登錄」到我的軟件之前返回Windows身份驗證信息。即User.Identity.IsAuthenticated總是返回true。他們可能會繼續選擇SQL身份驗證方法。

我猜那就是有事情做與HttpContext.Authentication.GetAuthenticationInfoAsync,但我不是清楚什麼authenticationScheme傳遞中,爲SignInAsync最後調用稱爲未指定過載。

回答

0

好吧,我明白這裏發生了什麼。我檢查用戶是否在服務器上進行身份驗證的方式是檢查sub聲明。只有通過身份驗證過程纔會出現這種情況。

var sub = User.FindFirst(JwtClaimType.Subject)?.value; 

如果這是空的,那麼我知道他們沒有被認證。如果它不是空的,那麼我知道我可以閱讀JtwClaimType.Name,它不是他們的Windows Authenticated帳戶名稱。

相關問題