110,539
社区成员
发帖
与我相关
我的任务
分享
string Url = (string)config.GetValue("ServerAddress", typeof(string));
WSHttpBinding binding = new WSHttpBinding();
binding.Security.Mode = SecurityMode.Message;
binding.Security.Message.ClientCredentialType =MessageCredentialType.Certificate;
ServiceMetadataBehavior met = new ServiceMetadataBehavior();
met = new ServiceMetadataBehavior() { HttpGetEnabled = true };
Uri httpUri = new Uri(Url);
ServiceHost myServiceHost = new ServiceHost(typeof(DataService), httpUri);
myServiceHost.AddServiceEndpoint(typeof(IDataService), binding, "");
myServiceHost.Description.Behaviors.Add(met);
myServiceHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName, "MyCert");
myServiceHost.Credentials.UserNameAuthentication.UserNamePasswordValidationMode = System.ServiceModel.Security.UserNamePasswordValidationMode.Custom;
myServiceHost.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = new CustomValidator();
//host承载服务
try
{
myServiceHost.Open();
if (myServiceHost.State == CommunicationState.Opened)//判断服务状态
return true;
else
return false;
}
catch (Exception e)
{
return false;
}
DataServiceClient data = new DataServiceClient();
data.ClientCredentials.UserName.UserName = "xiao";
data.ClientCredentials.UserName.Password = "123456";
Label1.Text = data.PrintMessage("123");
public class UserNamePasswordValidator : System.IdentityModel.Selectors.UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
if (userName != "xiao" || password != "123456")
{
throw new System.IdentityModel.Tokens.SecurityTokenException("Unknown Username or Password");
}
}
}