ホストに複数のバインディングとエンドポイントとクライアントも定義できます。疑似コードでこのようなものは、あなた自身の設定を記入する必要があります。
<netTcpbinding>
<binding name="notsecure">
<security mode="None" />
</binding>
<binding name="secure">
<security mode="Transport" /> <!-- desired security settings -->
</binding>
</netTcpBinding>
<services>
<service name="yyy">
<endpoint binding="netTcpbinding" bindingConfiguration="notsecure" name="insecureEnd"
contract="IContract" />
<endpoint binding="netTcpBinding" bindingConfiguration="secure"
name="secureEnd" contract="IContract" />
<host>
<baseAddresses>
<add baseAddress="xxx" />
</baseAddresses>
</host>
</service>
</services>
次に、クライアントを同じ複数のバインディングと複数のエンドポイントで設定します。
そして、コード内の名前で正しいエンドポイントを選択し
Client secure = new Client("secure");
secure.Call();
Client notsecure = new Client("notsecure");
あなたは彼らが特定の証明書で認証されたときに特定の機能のみを呼び出すことができるようにPrincipalPermission属性を使用することができます。 MSDNから
:
https://msdn.microsoft.com/en-us/library/ms731200(v=vs.110).aspx
[PrincipalPermission(SecurityAction.Demand, Name = "CN=ReplaceWithSubjectName; 123456712345677E8E230FDE624F841B1CE9D41E")]
public double Multiply(double a, double b)
{
return a * b;
}
はそれだけで特定のコマンドは、TLSを使用できるようにすることも可能ですか? Marker属性/インタフェースでマークするのと同じですか?例えば。 Command1、Command2はHTTP経由で、Command3はTLS経由でのみ使用できますか? – NickD