状況
一部の WCF サービスにさまざまな種類のセキュリティを実装しています。ClientCertificate、ユーザー名とパスワード、および匿名。
httpBinding 用と wsHttpBinding 用の 2 つの ServiceBehaviorConfigurations があります。(クレームベースのセキュリティ用のカスタム承認ポリシーがあります) 要件として、サービスごとに異なるエンドポイントが必要です。httpBinding を持つ 3 つのエンドポイントと wsHttpBinding を持つ 1 つのエンドポイント。
1 つのサービスの例:
- basicHttpBinding : 匿名
- basicHttpBinding : UserNameAndPassword
- basicHttpBinding : BasicSsl
- wsHttpBinding : BasicSsl
注: .NET 3.5 に取り組んでいます
問題
パート 1: http サービス構成で 1 回、wsHttp サービス構成で 1 回、同じサービスを 2 回指定することはできません。
パート 2:エンドポイントでサービスの動作を指定することはできません。(スローと例外、エンドポイントの動作が見つかりませんでした...サービスの動作をエンドポイントの動作に設定することはできません)
構成
パート 1 の場合:
<services>
<service name="Namespace.MyService" behaviorConfiguration="securityBehavior">
<endpoint address="http://server:94/MyService.svc/Anonymous" contract="Namespace.IMyService" binding="basicHttpBinding" bindingConfiguration="Anonymous">
</endpoint>
<endpoint address="http://server:94/MyService.svc/UserNameAndPassword" contract="Namespace.IMyService" binding="basicHttpBinding" bindingConfiguration="UserNameAndPassword">
</endpoint>
<endpoint address="https://server/MyService.svc/BasicSsl" contract="Namespace.IMyService" binding="basicHttpBinding" bindingConfiguration="BasicSecured">
</endpoint>
</service>
<service name="Namespace.MyService" behaviorConfiguration="wsHttpCertificateBehavior">
<endpoint address="https://server/MyService.svc/ClientCert" contract="Namespace.IMyService" binding="wsHttpBinding" bindingConfiguration="ClientCert"/>
</service>
</services>
サービス動作の構成:
<serviceBehaviors>
<behavior name="securityBehavior">
<serviceAuthorization serviceAuthorizationManagerType="Namespace.AdamAuthorizationManager,Assembly">
<authorizationPolicies>
<add policyType="Namespace.AdamAuthorizationManager,Assembly" />
</authorizationPolicies>
</serviceAuthorization>
</behavior>
<behavior name="wsHttpCertificateBehavior">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"/>
<serviceAuthorization serviceAuthorizationManagerType="Namespace.AdamAuthorizationManager,Assembly">
<authorizationPolicies>
<add policyType="Namespace.AdamAuthorizationManager,Assembly" />
</authorizationPolicies>
</serviceAuthorization>
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="PeerOrChainTrust" revocationMode="NoCheck"/>
</clientCertificate>
<serviceCertificate findValue="CN=CertSubject"/>
</serviceCredentials>
</behavior>
WsHttpBinding エンドポイントで異なるサービス動作を指定するにはどうすればよいでしょうか? または、wsHttpBinding と basicHttpBinding に別の方法で承認ポリシーを適用するにはどうすればよいでしょうか。エンドポイントの動作を使用しますが、エンドポイントの動作で承認ポリシーを指定することはできません