Я написал и WCF-клиент, и удаленный интернет-сервер WCF.C#: метод добавления аутентификации WCF, имя пользователя + SSL?
Удаленный сервер WCF запускает WPF, размещенный в традиционной оболочке Windows Service (то есть не IIS).
В настоящее время он отлично работает с базовым связыванием HTTP. Я использую Visual Studio 2010 + .NET 4.0 + C#.
Может ли кто-нибудь указать мне правильные шаги, чтобы изменить мой код, чтобы я мог добавить имя пользователя + аутентификацию SSL?
EDIT:
В конце службы я переопределен UserNamePasswordValidator следующим образом:
public class CustomUserNameValidator : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
Console.WriteLine("Got to here");
}
}
В конце службы, я указал ссылку на класс проверки имени пользователя:
ServiceHost serviceHost = new ServiceHost(typeof(PhiFeedServer.PhiFeed)); // ,baseAddress);
const bool passswordAuthentication = true;
if (passswordAuthentication)
{
// These two lines switch on username/password authentication (see custom class "CustomUserNameValidator" in common file PhiFeed.svc.cs)
// See http://msdn.microsoft.com/en-us/library/aa354513.aspx
serviceHost.Credentials.UserNameAuthentication.UserNamePasswordValidationMode = UserNamePasswordValidationMode.Custom;
serviceHost.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = new CustomUserNameValidator();
}
// Start the service
serviceHost.Open();
в конце клиента:
EndpointAddress endpointAddress = new EndpointAddress("http://localhost:20000/PhiFeed?wdsl");
BasicHttpBinding serviceBinding = new BasicHttpBinding();
serviceBinding.ReceiveTimeout = new TimeSpan(0, 0, 120);
proxy = new PhiFeedClient(serviceBinding, endpointAddress);
proxy.ClientCredentials.UserName.UserName = "myusername";
proxy.ClientCredentials.UserName.Password = "mypassword";
Однако, когда я запускаю все, он даже не вызывает валидатор имени пользователя - что происходит?
Работает ли она на basichttp? я бы предпочел бы привязку wsHttpBinding или net.tcp. потому что вы можете использовать сертификат с ним :). он будет защищен тогда – user507779 2010-11-25 22:09:24
В моей текущей настройке используется wsHttpBinding, поэтому он может использовать сертификат. Код выше не работает должным образом. – Contango 2010-11-29 13:04:35