2017-08-03 9 views
1

私が尋ねている質問とは異なる質問に人々が答えてくれると確信しているので、注意深くお読みください。IdentityServer4 *で識別情報を判別する* SERVER *

私は、ユーザーが認証する3つの方法(私たちは、現時点では真実の複数のソースを持っている)ことができますIdentityServer4サーバ、持っている:カスタム(SQLでユーザーID/PWD)、LDAP(AD内のユーザー/ PWD)&一体化窓を(パスワードは必要ありません)。これらはうまく動作し、私がクライアントMVCアプリケーションにいるとき、私が認証に使用した方法にかかわらず、アイデンティティとクレームを得ることができます。

質問はどのユーザーが(クライアントのMVCではなく)サーバーにログオンしているのかを理解する方法です。私はサーバーがこの情報を保持する必要がありますクッキーを維持していることがわかります。 User.Identity.Nameは、自分のソフトウェアに「ログイン」する前にWindows認証情報を返すことを覚えておいてください。すなわちUser.Identity.IsAuthenticatedは常にtrueを返します。彼らは、SQL認証方法を選択することができます。

私はつまりHttpContext.Authentication.GetAuthenticationInfoAsyncとは何かを持っていますが、SignInAsyncへの最後の呼び出しがそれを指定していないオーバーロードと呼ばれるように私は、渡すために何authenticationScheme上明確ではないんだ推測しています。

答えて

0

ここで何が起こっているのかよく分かります。ユーザーがサーバー上で認証されているかどうかを確認する方法は、subの申し立てを確認することです。これは、認証プロセスを経た場合にのみ表示されます。

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

nullの場合、認証されていないことがわかります。それがヌルでない場合、私はJtwClaimType.Nameを読むことができ、それがWindows認証のアカウント名ではないことを知っています。

関連する問題