web-dev-qa-db-ja.com

Thread.CurrentPrincipalとは何ですか、そしてそれは何をしますか?

とは Thread.CurrentPrincipal のために使用される?アプリケーションの認証と承認にどのように役立ちますか?それが何をするのかを説明するのに役立つ記事やリソースはありますか?

16
user1844634

Thread.CurrentPrincipal は、.NETアプリケーションがプロセスを実行しているユーザーまたはサービスアカウントのIDを表す方法です。

1つ以上のIDを保持でき、アプリケーションが IsInRole メソッドを介してプリンシパルがロールにあるかどうかを確認できるようにします。

.NETのほとんどの認証ライブラリは、ユーザーの資格情報を検証し、Threadクラスのこの静的プロパティを新しいプリンシパルオブジェクトに設定します。

異なるスレッドは、異なるユーザーからの要求を処理している可能性があるため、異なるプリンシパルを持つことができます(ASP.NET Webアプリケーションでは HttpContext.User 新しい要求ごとにThread.CurrentPrincipalにコピーされます)

.NET 4.5以降、すべてのプリンシパルクラスは ClaimsPrincipal から派生し、クレームベースの認証を有効にします。

UPDATE:これは私の開発ボックスでのWindowsPrincipalの外観です: enter image description here

15
MvdD