Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Сервер отклонил учетные данные клиента. / 24 сообщений из 24, страница 1 из 1
11.01.2010, 16:19
    #36403773
vlsaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
Протокол net.tcp
Клиент и сервер разнесены (разные компы, разные страны!)

При попытке подключения клиента к серверу лезет эксепшен
Код: plaintext
Сервер отклонил учетные данные клиента.
Что за учетные данные? В каких случаях такое сообщение генерится?
...
Рейтинг: 0 / 0
11.01.2010, 19:02
    #36404102
vlsaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
Поборол. Была аутентификация Windows. Снял. Сделал так:
Код: plaintext
1.
2.
3.
                    <security mode="Transport">
                      <transport clientCredentialType="None" />
                      <message clientCredentialType="None" />
                    </security>

Теперь вылез другой ексепшен:
Код: plaintext
Не удается активировать запрошенную службу

Уж не знаю, почему...
...
Рейтинг: 0 / 0
11.01.2010, 19:25
    #36404134
vlsaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
Настройка безопасности транспортного уровня требует чето-то такого, на основе которого должен шифроваться трафик. (Это я так думаю). Но этого такого у меня нет, ни сертификата ни авторизации Windows. Подтому пока снял безопасность вообще
Код: plaintext
1.
2.
3.
                  <security mode="None">
                    <transport clientCredentialType="None" protectionLevel="None" />
                    <message clientCredentialType="None" />
                  </security>

Так пошло поехало. Теперь буду думать о том, как все же трафик закодировать.
...
Рейтинг: 0 / 0
24.09.2010, 15:46
    #36865227
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
Пытался разобраться с безопасностью для служб WCF и дочитался МСДН-а до полной каши в голове.
Создал WCF-сервис, который хостится в службе Windows.
Со стороны клиента написано
Код: plaintext
1.
2.
3.
NetTcpBinding binding = new NetTcpBinding(SecurityMode.Transport);
EndpointAddress endPointAddress = new EndpointAddress("net.tcp://biz:8000/AdminService");
ChannelFactory<IAdminService> myChannelFactory = new ChannelFactory<IAdminService>(binding, endPointAddress);
adminService = myChannelFactory.CreateChannel();

Со стороны сервера
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
adminServiceHost = new ServiceHost((typeof(AdminService)), new Uri("net.tcp://localhost:8000/AdminService"));

NetTcpBinding binding = new NetTcpBinding(SecurityMode.Transport);

ServiceEndpoint endPoint = adminServiceHost.AddServiceEndpoint(typeof(IAdminService), binding, "");

ServiceMetadataBehavior metadataBehavior = new ServiceMetadataBehavior();
adminServiceHost.Description.Behaviors.Add(metadataBehavior);

ServiceSecurityAuditBehavior auditBehavior = new ServiceSecurityAuditBehavior();
auditBehavior.AuditLogLocation = AuditLogLocation.Application;
auditBehavior.MessageAuthenticationAuditLevel = AuditLevel.SuccessOrFailure;
auditBehavior.ServiceAuthorizationAuditLevel = AuditLevel.SuccessOrFailure;
adminServiceHost.Description.Behaviors.Add(auditBehavior);

adminServiceHost.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding(), "mex");

adminServiceHost.Open();

и не могу теперь соединится со своей службой (при SecurityMode.None все работает норм).
Как я смутно догадываюсь теперь нужно где-то указать какие-то Identity у адресов конечных точек. Но что это и где его взять?
Не могли бы вы внести небольшой порядок в бардак в моей голове?
Для начала не совсем ясно с Behaviors. Как я вижу их можно задавать и для службы в целом и для каждой конечной точки. А как понять какое поведение будет использоваться?
С учетными данными вообще каша в голове. Они задаются и для службы и для конечных точек? Покажите пожалуйста на пальцах как в моем примере организовать безопасную коммуникацию на уровне транспорта между клиентом и сервером без использования сертификатов.
...
Рейтинг: 0 / 0
27.09.2010, 13:43
    #36867925
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
Переделал клиента. Теперь он выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
NetTcpBinding binding = new NetTcpBinding(SecurityMode.Transport);
//binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows;

NetworkCredential credential = new NetworkCredential();
credential.Domain = "MyServer";
credential.UserName = "MyUser";
credential.Password = "MyPass";
EndpointAddress endPointAddress = new EndpointAddress("net.tcp://biz:8000/AdminService");

adminService = new MyProduct.PresentationLayer.AdminServiceReference.AdminServiceClient(binding, endPointAddress);
adminService.ClientCredentials.Windows.AllowNtlm = true;
adminService.ClientCredentials.Windows.ClientCredential = credential;

Все равно не работает. Что нужно указывать в
Код: plaintext
1.
2.
credential.Domain = "MyServer";
credential.UserName = "MyUser";
credential.Password = "MyPass";
если сама служба работает от имени локальной системы? Может правильно будет ее запускать от имени какого либо пользователя сервера? (а будет ли она запущена если этот пользователь не залогинился на сервере?)
...
Рейтинг: 0 / 0
28.09.2010, 09:48
    #36869219
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
И тишина!
Не верю что никто не знает в чем причина! :)
Ведь наверняка причина проста. Может в настройках службы тоже нужно указывать какие-то данные?
...
Рейтинг: 0 / 0
02.10.2010, 01:35
    #36878211
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
Сознавайтесь!!!
...
Рейтинг: 0 / 0
04.10.2010, 09:52
    #36879624
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
Lexxxxxbinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows;
Windows != Ntlm
Windows - это проверка доменной (а не локальной) учетки, протокол Kerberos.

(либо использовать доменную учетку, либо делать TcpClientCredentialType.None, либо другой биндинг, например Http, там есть HttpClientCredentialType.Ntlm, либо...)
...
Рейтинг: 0 / 0
04.10.2010, 09:58
    #36879633
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
LRLexxxxxbinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows;
Windows != Ntlm
Windows - это проверка доменной (а не локальной) учетки, протокол Kerberos.

(либо использовать доменную учетку, либо делать TcpClientCredentialType.None, либо другой биндинг, например Http, там есть HttpClientCredentialType.Ntlm, либо...)

Да, но там ведь adminService.ClientCredentials.Windows.AllowNtlm = true; (он и по умолчанию включен)
Доменная учетка не катит, так как машины могут быть совсем в разных доменах и не в доменах вообще. Привязка нужна именно tcp. И просто TcpClientCredentialType.None не подходит, так как нужно ограничит доступ к службе. Люди говорят что это возможно, но никто не говорит что как. Параметр adminService.ClientCredentials.Windows.AllowNtlm = true мне как бы намекает что можно, но что куда писать никак не соображу.
...
Рейтинг: 0 / 0
04.10.2010, 10:02
    #36879643
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
Да и
Код: plaintext
1.
2.
credential.Domain = "MyServer";
credential.UserName = "MyUser";
credential.Password = "MyPass";

в

Код: plaintext
1.
adminService.ClientCredentials.Windows.ClientCredential

ведь можно зачем-то писать? Значит можно как-то это сделать?
...
Рейтинг: 0 / 0
04.10.2010, 10:14
    #36879657
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
LexxxxxДа, но там ведь adminService.ClientCredentials.Windows.AllowNtlm = true; (он и по умолчанию включен)Да, действительно...

Ну а с TcpClientCredentialType.None работает?
...
Рейтинг: 0 / 0
04.10.2010, 10:22
    #36879674
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
LRНу а с TcpClientCredentialType.None работает?
Да, так все работает нормально.
...
Рейтинг: 0 / 0
04.10.2010, 10:47
    #36879723
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
LexxxxxДа, так все работает нормально.А если попробовать доменную учетку, будет работать? Т.е.
Код: plaintext
1.
2.
3.
credential.Domain = "MyDomain";
credential.UserName = "MyUser";
credential.Password = "MyPass";
...
Рейтинг: 0 / 0
04.10.2010, 10:53
    #36879739
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
LRLexxxxxДа, так все работает нормально.А если попробовать доменную учетку, будет работать?

У меня нет домена. Есть комп (MyComp) с клиентом, на котором из под учетки Ivanov выполняется клиент службы. На сервере (Biz) запущена служба от имени локальной системы. Так же на червере есть пользователь Ivanov с таким же паролем (vvv) как и на клиенте. Пробовал прописывать
Код: plaintext
1.
2.
3.
credential.Domain = "Biz";
credential.UserName = "Ivanov ";
credential.Password = "vvv";

Не работает. Пробовал запускать на сервере службу от имени Ivanov. Тоже не помогло. Не могу понять "кто на ком стоять должен". Или служба от имени этого иванова должна работать () что не помогло), или какого ей еще рожна надо!
...
Рейтинг: 0 / 0
04.10.2010, 10:56
    #36879744
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
Lexxxxx,

а какая ошибка?
...
Рейтинг: 0 / 0
04.10.2010, 11:09
    #36879769
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
"Сервер отклонил учетные данные клиента. "
...
Рейтинг: 0 / 0
04.10.2010, 15:56
    #36880598
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
А вот этот пример (в аттаче) будет работать? (у меня работает)
...
Рейтинг: 0 / 0
04.10.2010, 22:56
    #36881335
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
LRА вот этот пример (в аттаче) будет работать? (у меня работает)

Еще вспомнил что когда служба и клиент крутились на одной машине все работало. Когда я унес службу на виртуалку (Biz), начались исключения "Сервер отклонил" и пришлось сделать SecurityMode.None (когда я говорил что с TcpClientCredentialType.None работает нормально, я перепутал с SecurityMode.None. Завтра проверю как оно будет с TcpClientCredentialType.None).

По Вашему примеру. Сначала не удалось запустить его по причине того, что служба не имеет прав на указанный урл. Переписал
Код: plaintext
1.
ServiceHost host = new ServiceHost(typeof(MyService),new Uri("http://localhost:8000/"));

на

Код: plaintext
1.
ServiceHost host = new ServiceHost(typeof(MyService), new Uri("net.tcp://localhost:8000/"));
(не пойму, зачем указан Uri("http://localhost:8000/") если используется привязка тср?)
Тогда запустилось, но при вызове метода "Сервер отклонил..."
...
Рейтинг: 0 / 0
04.10.2010, 23:36
    #36881373
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
Lexxxxx(не пойму, зачем указан Uri("http://localhost:8000/") если используется привязка тср?)
Тогда запустилось, но при вызове метода "Сервер отклонил..."
а я и не заметил :) пример взят с www.idesign.net , я подправил лишь конфиги - добавил
Код: plaintext
1.
2.
3.
4.
<binding name="NetTcpBinding">
                   <security mode="Transport">
                       <transport clientCredentialType="Windows" />
...
в конечном счете WCF конфигурится из конфигов (и на сервере и на клиенте), т.е.
Код: plaintext
1.
2.
            <endpoint address="net.tcp://localhost:8001/MyService" binding="netTcpBinding" bindingConfiguration="NetTcpBinding"
                      contract="MyNamespace.IMyContract"/>
и эта, видимо, оплошность с Uri("http://localhost:8000/") не должна быть причиной "Сначала не удалось запустить его по причине того, что служба не имеет прав на указанный урл" (по-крайней мере у меня это ни на чем не сказалось)

Зато была проблема с тем что на серверной ОС был включен "Use simple file sharing" (проверьте, эта опция должна быть отключена, иначе будет ошибка типа "A remote side security requirement was not fulfilled during authentication. Try increasing the ProtectionLevel and/or ImpersonationLevel.")

Вот с виртуалкой не пробовал (подозреваю, проблем там может быть...)
...
Рейтинг: 0 / 0
05.10.2010, 00:12
    #36881403
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
LR
и эта, видимо, оплошность с Uri("http://localhost:8000/") не должна быть причиной "Сначала не удалось запустить его по причине того, что служба не имеет прав на указанный урл" (по-крайней мере у меня это ни на чем не сказалось)
Она это и есть. Там в подробностях исключения есть ссылка на страницу, на которой указано как в командной строке зарегистрировать урл для службы. Но это не наш случай, так что я думаю на это пока отвлекаться не стоит.

LR
Зато была проблема с тем что на серверной ОС был включен "Use simple file sharing" (проверьте, эта опция должна быть отключена, иначе будет ошибка типа "A remote side security requirement was not fulfilled during authentication. Try increasing the ProtectionLevel and/or ImpersonationLevel.")
Вот с виртуалкой не пробовал (подозреваю, проблем там может быть...)
А вот "Простой доступ к файлам" не проверял. В качестве "серверной ос" на виртуалке стоит ХР Про СП3, и по умолчанию простой доступ там вроде включен. Правда ошибок, подобных указанной Вами, не встречал. Завтра проверю что там и как с шарингом.
Но не ясно пока чего не заводится ваш пример, хотя толком разбираться лень, спать хочется. Завтра утром буду продолжать разборы.
Спасибо Вам за содействие!
...
Рейтинг: 0 / 0
05.10.2010, 10:10
    #36881624
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
LRЗато была проблема с тем что на серверной ОС был включен "Use simple file sharing" (проверьте, эта опция должна быть отключена, иначе будет ошибка типа "A remote side security requirement was not fulfilled during authentication. Try increasing the ProtectionLevel and/or ImpersonationLevel.")

ВОТ ТУТ СОБАКА И ПОРЫЛА!!! Правда текст ошибки был как название темы. Но как только я отключил "Простой доступ..." так все и заработало! Оказалось что на "сервере" достаточно иметь не отключенную учетку (правда у меня она с правами админа. с правами буду чуть позже разбираться) пользователя. В credential нужно указать имя компа со службой и логин с паролем этой учетки. Все это сводит Windows аутентификацию к проверке по логину и паролю, которая по доке МС якобы не поддерживается привязкой NetTcpBinding :)

СПАСИБО ВАМ ОГРОМНОЕ!!!
...
Рейтинг: 0 / 0
05.10.2010, 10:18
    #36881637
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
Lexxxxx (правда у меня она с правами админа. с правами буду чуть позже разбираться)

Похоже права в моем случае роли не играют, так как работает даже если цепляешься к учетке с правами "Гости". А это тоже не очень хорошо. А как бы ограничить подключение к группе допустим какой либо группой пользователей?
...
Рейтинг: 0 / 0
05.10.2010, 11:23
    #36881810
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
LexxxxxА как бы ограничить подключение к группе допустим какой либо группой пользователей?
как вариант - указать в PrincipalPermissionAttribute параметр Role
Код: plaintext
1.
2.
       [PrincipalPermission(SecurityAction.Demand, Role = "Администраторы")]
       public void MyMethod()
но вот как задать для всего сервиса, х.з. (PrincipalPermissionAttribute прицепленный к class MyService : IMyContract приводит к ошибке, запаздывает аутентификация?...)

Lexxxxxпо доке МС якобы не поддерживается привязкой NetTcpBinding :)ну, в доке сказано, что если керберосом не получается и AllowNtlm = true, то тады Ntlm (но везде подчеркивается, что керберос - надежная защита, а Ntlm - нет)
...
Рейтинг: 0 / 0
20.10.2010, 12:05
    #36909155
Lexxxxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сервер отклонил учетные данные клиента.
LRно вот как задать для всего сервиса, х.з. (PrincipalPermissionAttribute прицепленный к class MyService : IMyContract приводит к ошибке, запаздывает аутентификация?...)
Придумал вариант и описал тут .
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Сервер отклонил учетные данные клиента. / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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