powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Авторизация WCF User/Password
7 сообщений из 7, страница 1 из 1
Авторизация WCF User/Password
    #37508114
Johnyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе утро товарищи!
Разрабатываю приложение 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
Авторизация WCF User/Password
    #37509840
Фотография папа арбуз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JohnykОшибка при отправке запроса HTTP к https://192.168.1.5:1051/order. Возможно, это вызвано тем, что сертификат сервера не сконфигурирован с HTTP.SYS для случая HTTPS. Это может быть также вызвано несоответствием привязки безопасности между клиентом и сервером.

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


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