Гость
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Авторизация WCF User/Password / 7 сообщений из 7, страница 1 из 1
02.11.2011, 11:47
    #37508114
Johnyk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация WCF User/Password
Доброе утро товарищи!
Разрабатываю приложение WPF+WCF и пришел к надобности безопасной передачи данных, но мне будет достаточно обычного подтверждения User/Password ниже исходники:
Сервис XAML:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
      
<behavior>
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
            <serviceCredentials>
              <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Example.CustomValidator, Example"/>
            </serviceCredentials>
        </behavior>

<service name ="Service.Services.Order">
        <endpoint binding="basicHttpBinding" bindingConfiguration="OrderConfiguration"
                  contract="Service.Interfaces.IOrder">
        </endpoint>
      </service>
Сервис C#:
Код: plaintext
1.
2.
3.
4.
5.
Type serviceTypeOrder = typeof(Example.Services.Order);
            Uri[] serviceUriOrder = new Uri[2] { new Uri("https://192.168.1.5:1051/order"), new Uri("http://192.168.1.5:1050/order") };
            ServiceHost hostOrder = new ServiceHost(serviceTypeOrder, serviceUriOrder);
            hostOrder.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine,StoreName.My, X509FindType.FindBySubjectName, "MyCert");
            hostOrder.Credentials.ClientCertificate.Authentication.RevocationMode = X509RevocationMode.NoCheck;
            hostOrder.Open();
Кастомная авторизация:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
class CustomValidator:UserNamePasswordValidator
    {
        public override void Validate(string userName, string password)
        {
            if ((userName != "John") || (password != "1234"))
            {
                throw new SecurityTokenException("Validation Failed!");
            }
        }
    }

Клиент:
Код: plaintext
1.
2.
ServiceOrder.ClientCredentials.UserName.UserName = "John";
            ServiceOrder.ClientCredentials.UserName.Password = "123";
            idUser = ServiceOrder.GetIdUser(textBox1.Text,passwordBox1.Password);

Ошибка на клиенте: Ошибка при отправке запроса HTTP к https://192.168.1.5:1051/order. Возможно, это вызвано тем, что сертификат сервера не сконфигурирован с HTTP.SYS для случая HTTPS. Это может быть также вызвано несоответствием привязки безопасности между клиентом и сервером.

Спасибо!
...
Рейтинг: 0 / 0
03.11.2011, 01:52
    #37509840
папа арбуз
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация WCF User/Password
JohnykОшибка при отправке запроса HTTP к https://192.168.1.5:1051/order. Возможно, это вызвано тем, что сертификат сервера не сконфигурирован с HTTP.SYS для случая HTTPS. Это может быть также вызвано несоответствием привязки безопасности между клиентом и сервером.

Сертификат стоит? https настроен? http://msdn.microsoft.com/en-us/library/ms733768.aspx
...
Рейтинг: 0 / 0
03.11.2011, 08:50
    #37509941
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация WCF User/Password
Есть такая штука: CleanUsernameBinding . Но лучше сделать "по-взрослому", с сертификатами и шифрованием.
...
Рейтинг: 0 / 0
03.11.2011, 09:52
    #37509985
Johnyk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация WCF User/Password
Спасибо что отозвались, но проблему решил сам. Кривой сертификат создавался, создал через программу pruralsight self-cert.
...
Рейтинг: 0 / 0
03.11.2011, 13:27
    #37510450
Johnyk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация WCF User/Password
Еще вопросик, как разграничить доступ к отдельным функциям, с использованием UserName. Точней мне нужно сделать регистрацию нового пользователя, в этом же сервисе, как думаю - это можно реализовать передавать сервису левого пользователя Guest, у которого есть право вызывать 1 функцию регистрации. Смотрел в сторону Ролей, но как я понял сервис их берет из пользователей Winows, а можно, как то при передача логина и пароля на клиенте передать роль? Или даже в кастомном валидаторе из базы достать роль.
Главная проблема можно ли задать роль для текущего соединения?
Спасибо!
...
Рейтинг: 0 / 0
05.11.2011, 10:03
    #37512451
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация WCF User/Password
Смотрите в сторону Membership WCF.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
20.10.2016, 10:16
    #39330388
.Anatoly.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация WCF User/Password
Столкнулся с такой же проблемой. Решением стало указание протокола, в моем случае TLS
Код: c#
1.
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Авторизация WCF User/Password / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]