はじめに
WCF のセキュリティを調べていて、MSDN Magazine の「宣言型の WCF のセキュリティ」という記事が非常に勉強になりました。でも文章が長くてもう一度読む気がちょっと起きない…。そこで今後のために要点をまとめてみました。
間違いや不足などがあれば指摘して下さいm(_ _)m
イントラネットアプリケーションの場合
シナリオ
構成
- NetTcpBinding、NetNamedPipeBinding、および NetMsmqBinding を使用する
- 最高の保護レベルで構成
- 暗号化と署名を実施
- 転送セキュリティはトランスポートモード
インターネットアプリケーションの場合
シナリオ
- クライアントまたはサービスが WCF や Windows を使用していない可能性あり
- かなりの数のクライアントがサービスを呼び出す
- クライアントの呼び出しはファイアウォールの外部から
- トランスポートには HTTP を使用する必要あり
- 中継点が複数あるかも
構成
- WSHttpBinding または WSDualHttpBinding を使用する
- 転送セキュリティにはメッセージセキュリティ
企業間アプリケーションの場合
シナリオ
- サービスと対話するクライアントの数はごく少数
- クライアントがサービスと対話できるのは詳細なビジネス契約およびその他の条件が満たされている場合に限る
- クライアントまたはサービスが WCF や Windows を使用していない可能性あり
- クライアントの呼び出しはファイアウォールの外から
- トランスポートには HTTP を利用する必要がある
- 中継点が複数あるかも
- クライアントの認証にはサービスが既に認識している X509 証明書を使用する
- Windows アカウントやユーザー名は使わない
構成
- BasicHttpBinding、WSHttpBinding、または WSDualHttpBinding を使用する
- 転送セキュリティにはメッセージセキュリティ
匿名アプリケーションの場合
シナリオ
- クライアントは資格情報を提示せずにサービスにアクセス
- クライアントとサービスは改ざんやスニッフィングから保護された安全なメッセージ転送が必要
- 匿名でありながら安全なアクセスを実現する必要あり
- クライアントの数に制限は無い
- クライアントの接続方法は HTTP 経由である場合も TCP 経由である場合もある
- クライアントがインターネット上で複数の中継点を経由して呼び出しを行う可能性がある
構成
- NetTcpBinding、WSHttpBinding、WSDualHttpBinding、および NetMsmqBinding を使用できる
- 転送セキュリティにはメッセージセキュリティ
- 承認およびロールベースのセキュリティは実行できない
セキュリティなしの場合
- アプリケーションはセキュリティを完全にオフにする
- 転送セキュリティを一切利用しない
- 呼び出し元の認証も承認も行わない
- セキュリティを放棄する正当な理由が必要