Hi,
I've created a custom CustomUserNameSecurityTokenHandler an registered it within the configuration-file this way:
<system.identityModel><identityConfiguration><securityTokenHandlers><remove type="System.IdentityModel.Tokens.WindowsUserNameSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/><add type="MiniSTS.CustomUserNameSecurityTokenHandler, MiniSTS"/></securityTokenHandlers></identityConfiguration></system.identityModel>
This works fine, but now I'm wondering how to do this using code. I've tried it with the following code, but it hasn't worked.
using (var host = new WSTrustServiceHost(new CustomSecurityTokenServiceConfiguration(issuerName, signingCertificateName, typeof(CustomSecurityTokenService)), new Uri("http://localhost:21000/FlugService_STS/Service.svc")))
{
var cred = new ServiceCredentials();
cred.UseIdentityConfiguration = true;
var idConfig = cred.IdentityConfiguration;
idConfig.SecurityTokenHandlers.Remove(idConfig.SecurityTokenHandlers.OfType<WindowsUserNameSecurityTokenHandler>().First());
idConfig.SecurityTokenHandlers.AddOrReplace(new CustomUserNameSecurityTokenHandler());
cred.ServiceCertificate.Certificate = CertificateUtil.GetCertificate(StoreName.My, StoreLocation.LocalMachine, "CN=STSTestCert");
var debug = host.Description.Behaviors.OfType<ServiceDebugBehavior>().First();
debug.IncludeExceptionDetailInFaults = true;
var metadata = host.Description.Behaviors.OfType<ServiceMetadataBehavior>().First();
metadata.HttpGetEnabled = true;
host.Description.Behaviors.Add(cred);
var binding = new WS2007HttpBinding();
var mexBinding = MetadataExchangeBindings.CreateMexHttpBinding();
var ep = host.AddServiceEndpoint(typeof(System.ServiceModel.Security.IWSTrust13SyncContract), binding, "IWSTrust13_UserName");
var serviceAuth = host.Description.Behaviors.OfType<ServiceAuthorizationBehavior>().First();
serviceAuth.PrincipalPermissionMode = PrincipalPermissionMode.Always;
binding.Security.Mode = SecurityMode.Message;
binding.Security.Message.EstablishSecurityContext = false;
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
host.Open();
Console.WriteLine("started");
Console.ReadLine();
}What's the problem here?
Wishes,
Manfred