WsFederationHttpBinding エンドポイントをプログラムで公開する WCF サービスがあります。次に、Visual Studio を使用して、サービス参照ダイアログを使用してクライアント側のエンドポイントを作成したいと考えています。クライアントは正しいエンドポイントとバインディングを生成しますが、STS のクライアント構成でバインディングを手動で作成し、フェデレーション サービス バインディングの issuer 要素に接続する必要があります。STS バインディングがクライアントで自動的に生成されるようにサーバー側バインディングを作成する方法はありますか?
これは基本的に、コードでバインディングを生成する方法です。
public class MyServiceHost : ServiceHostFactory
{
protected override void AddServiceEndpoint(ServiceHost host, Type contract, Uri address)
{
var binding = new WSFederationHttpBinding();
// set up some binding properties here
binding.Security = new WSFederationHttpSecurity
{
Mode = WSFederationHttpSecurityMode.Message,
Message = new FederatedMessageSecurityOverHttp
{
AlgorithmSuite = SecurityAlgorithmSuite.Default,
EstablishSecurityContext = true,
IssuedTokenType = "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1",
NegotiateServiceCredential = false,
IssuerAddress = new EndpointAddress(
new Uri("http://mydomain/STSService.svc"),
EndpointIdentity.CreateSpnIdentity("http/IDENTITYMASKED")),
IssuerBinding = new WSHttpBinding
{
Name = "stsBinding",
Security = new WSHttpSecurity
{
Mode = SecurityMode.Message,
Message = new NonDualMessageSecurityOverHttp
{
ClientCredentialType = MessageCredentialType.Windows,
NegotiateServiceCredential = true,
AlgorithmSuite = SecurityAlgorithmSuite.Default,
EstablishSecurityContext = false
}
}
}
}
};
host.AddServiceEndpoint(contract, binding, address);
}
}
Visual Studio でこれへのプロキシを生成したときに、stsBinding が構成に含まれていないか、接続されていません。これを実現する方法はありますか、それとも MEX で許可されていませんか?