Windows 認証を使用する WCF アプリケーションがあります。Windows プリンシパル オブジェクトは、System.Threading.Thread.CurrentPrincipal() プロパティで見つけることができます。それは大丈夫です。ただし、よりきめ細かい承認と監査に使用されるカスタム プリンシパル オブジェクトもあります。これは、Windows ユーザーではなく、ドメイン ユーザーです。私は本当に両方が必要で、サービス側でカスタム ユーザーを保存する場所を探しています。これにより、サービスで実行されるすべてのコードが、ビジネス レイヤーとデータ レイヤーを介してこのユーザーにアクセスできるようになります。
クライアントとサーバー間の通信は、カスタム動作とメッセージ インスペクターによって処理されます。クライアント (ASP.NET Web アプリケーション) からサービスを呼び出すと、現在のユーザーがセッションから取得され、サービス呼び出しでカスタム ヘッダーにシリアル化されます。サービス側では、ヘッダーからプリンシパルを取り除き、カスタム プリンシパルをここに配置します。
OperationContext.Current.ServiceSecurityContext.AuthorizationContext.Properties("CurrentDomainUser")
したがって、このアプローチを検証するための質問:
- これは、サービスにカスタム プリンシパルを保存するための有効なアプローチですか。Windows認証をそのままにしておきたいことを覚えておいてください。
- これは「ベストプラクティス」ですか?それとももっと良い方法がありますか?
- このアプローチで注意すべき落とし穴や落とし穴はありますか?
入力していただきありがとうございます。