C#と諸々

C#がメインで他もまぁ諸々なブログです
おかしなこと書いてたら指摘してくれると嬉しいです(´・∀・`)
つーかコメント欲しい(´・ω・`)

--/--/-- --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
タグ:
トラックバック(-) | コメント(-) | このエントリーを含むはてなブックマーク
2007/03/11 21:16
[ クライアントのアカウント情報を取得する ]
WCFでは、 ServiceSecurityContext クラス (System.ServiceModel)Current 静的プロパティから、現在のクライアントのアカウント情報を格納する ServiceSecurityContext オブジェクトが取得できます。
この ServiceSecurityContext オブジェクトの WindowsIdentity プロパティまたは PrimaryIdentity プロパティにて、クライアントのアカウント情報を取得できます。
しかし、バインディングの設定によってはクライアントのアカウント情報を取得できません。その場合、 ServiceSecurityContext.Current は null を返します。


[ WS-Security ]
WCFではWS-Securityを利用することができます。
WS-Securityによって、SOAPメッセージの完全性、秘匿性が確保されます。
WS-Securityを有効にしている場合、クライアントのアカウント情報を取得することもできます。

WsHttpBingindバインディングセットでは、デフォルトでWS-Securityが適用されます。BasicHttpBindingバインディングセットではWS-Securityを利用することができません。

WsHttpBindingバインディングセットでは、 [ wsHttpBinding ] - [ binding ] - [ security ] セクションの mode 属性に、 "Message" または "TransportWithMessageCredential" を指定すると、WS-Securityが適用されます。これ以外の値を指定した場合、WS-Securityは適用されません。デフォルト値は "Message" です。
なお、WS-Security を適用する場合、 [ wsHttpBinding ] - [ binding ] - [ security ] - [ message ] セクションの clientCredentialType 属性にて認証方式を指定することができます。この属性に指定できる値は HttpClientCredentialType 列挙体 (System.ServiceModel) の列挙値となります。デフォルト値は "Windows" です。この属性に "None" を指定した場合、クライアントは匿名アクセスを行います。 ( ServiceSecurityContext.Current は null になりません。 )

WS-Securityは、セキュリティの強化が行われる分、通信データ量は肥大化し、SOAPメッセージでやりとりされるデータの暗号化・復号化というコストの高い処理が発生します。
SOAPメッセージの完全性、秘匿性が要求されるような場合はWS-Securityを適用し、それ以外の場合で、特にパフォーマンスが要求されるような場合はWS-Securityは適用しない方がいいかと思います。


[ WS-Securityを適用せずにクライアントの認証情報を取得する ]
WS-Securityを適用せずにクライアントの認証情報を取得したい場合、 CustomBinding バインディングセットを使用し、 [ customBinding ] - [ binding ] - [ httpTransport ] セクションの authenticationScheme 属性にて適切な認証方式を設定します。更に、authenticationScheme属性で指定した認証方式に応じて、IISの認証方法も適切に設定する必要があります ( 匿名アクセスを不可に設定することも可能 ) 。
authenticationScheme 属性に指定できる値は、 AuthenticationSchemes 列挙体 (System.Net) の列挙値となります。デフォルト値は "Anonymous" です。
ただし、"IntegratedWindowsAuthentication" ( 統合Windows認証 ) や "None" を指定すると、「ファクトリは ExactlyOne 認証しかサポートしていません」とエラーになります。
統合Windows認証の代わりには、 "Negotiate" または "Ntlm" を指定します ( 通常は、Kerberos 認証とNTLM認証をサポートする "Negotiate" を指定しておけば問題ないと思います )  。
他にも、"Digest", "Basic", "Anonymous" を指定することができます。 "Anonymous" を指定した場合、クライアントは匿名認証を行います。 ( ServiceSecurityContext.Current は null になります。 )

WS-Security を適用せずに、Negotiate 認証を利用する場合の設定例を以下に示します。

<customBinding>
    <binding name="MyServiceBinding">
        <httpTransport authenticationScheme="Negotiate" />
    </binding>
</customBinding>

タグ: .NET C# WCF 認証











トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/94-63d91ba9

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。