組み込みの .NET および WCF 機能の再利用から始まり、完全なカスタム実装で終わる、WCF の認証と承認のさまざまな実装について読みました。
しかし、考慮すべき要素が非常に多いため、イントラネットのビジネス アプリケーション プロジェクトにどのように実装するかについて混乱しています。
必要なものは次のとおりです。 - WCF .NET 4.5 サービスは、IIS 7 以降でホストされます。
おそらく、ASP.NET 互換性は無効になります。
プロトコルは BasicHttpBinding を使用した HTTP になりますが、トラフィックを最小限に抑えるためにバイナリ シリアル化が必要になる場合があります。
WCF メソッドは、データベース内のユーザー セッション オブジェクトに対してチェックされるカスタム セッション ID を受け取ります。このプロジェクトでは、.NET セッションは許可されていません。
ID を受け取った後、サービスは対応するユーザー データ (ユーザーが現在の操作を実行できるかどうかを確認するための承認フラグを含む) を読み取り、それを検証します。データが無効な場合、例外がスローされ、WCF 操作は実行されません。検証が成功すると、ユーザーの ID が現在の操作コンテキスト (および現在のスレッド プリンシパル) に格納されるため、WCF 操作の実行中にさまざまなコンポーネントからアクセスできます。
すべての認証と承認は、WCF 操作の実行前に透過的に行う必要があります。WCF メソッドを作成するプログラマーによる追加の作業は必要ありません。
認証検証を実行するときに、実行中の WCF 操作名にアクセスする必要があるため、ユーザーが操作を実行する権限を持っていない場合に例外をスローできます。
テスト担当者は SoapUI を使用するため、標準の SOAP または HTTP ヘッダーを介してセッション ID を渡すことができる必要があります。
認証ルーチンを実装する最も簡単な方法はどれですか? カスタム バインドを使用する必要がありますか? カスタム動作?ある種の組み込みの要求イベント ハンドラー (正確にはどれで、ASP.NET 互換性が無効になっている場合に機能しますか)? 承認ポリシー (組み込み機能のほとんどを使用しないため、少し過剰に思えます)? 他の何か?