Ошибка авторизации при доступе к веб-сервису
От: wraithik Россия  
Дата: 05.07.13 04:48
Оценка:
Есть веб-сервис написанный на 1С, опубликован на Апаче.
При попытке вызова его метода пишет:

Запрос HTTP не разрешен для схемы проверки подлинности клиента "Anonymous". От сервера получен заголовок проверки подлинности "Basic realm="1C:Enterprise 8.2"".


Оно логично, т.к. надо сделать авторизацию, иначе 1С не пустит.
Не понятно только как авторизацию сделать.

Код вида, не помогает:
srvTSD.TSDPortTypeClient ws = new srvTSD.TSDPortTypeClient("TSDSoap","http://localhost/tsd/ws/wsTSD.1cws?wsdl");
ws.ClientCredentials.UserName.UserName = "web";
ws.ClientCredentials.UserName.Password = "1";
ws.ChannelFactory.Credentials.UserName.UserName = "web";
ws.ChannelFactory.Credentials.UserName.Password = "1";
ws.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Identification;
ws.ClientCredentials.Windows.ClientCredential.UserName = "web";
ws.ClientCredentials.Windows.ClientCredential.Password = "1";
ws.ClientCredentials.SupportInteractive = true;


ws.Open();

Подскажите чего делать?
Re: Ошибка авторизации при доступе к веб-сервису
От: Nikolay_Ch Россия  
Дата: 05.07.13 05:12
Оценка:
Здравствуйте, wraithik, Вы писали:

W>Есть веб-сервис написанный на 1С, опубликован на Апаче.

W>При попытке вызова его метода пишет:

W>

W>Запрос HTTP не разрешен для схемы проверки подлинности клиента "Anonymous". От сервера получен заголовок проверки подлинности "Basic realm="1C:Enterprise 8.2"".


W>Оно логично, т.к. надо сделать авторизацию, иначе 1С не пустит.

W>Не понятно только как авторизацию сделать.

Может так?
http://msdn.microsoft.com/en-us/library/ms733775.aspx

Вот здесь еще немного:
http://www.forum.mista.ru/topic.php?id=661110
Re[2]: Ошибка авторизации при доступе к веб-сервису
От: wraithik Россия  
Дата: 05.07.13 07:08
Оценка:
Прочитал, не помогло.

Сделал так:

System.ServiceModel.EndpointAddress ep = new System.ServiceModel.EndpointAddress("http://localhost/tsd/ws/wsTSD.1cws?wsdl");
                System.ServiceModel.BasicHttpBinding binding = new System.ServiceModel.BasicHttpBinding();

                binding.Security.Mode =System.ServiceModel.BasicHttpSecurityMode.TransportWithMessageCredential;
                binding.Security.Transport.ClientCredentialType = System.ServiceModel.HttpClientCredentialType.Basic;
                

                srvTSD.TSDPortTypeClient ws = new srvTSD.TSDPortTypeClient(binding, ep);


Он захотел HTTPS. А мне надо через HTTP.

Указанная схема URI "http" недопустима. Ожидалась "https".
Имя параметра: via

Re[3]: Ошибка авторизации при доступе к веб-сервису
От: Nikolay_Ch Россия  
Дата: 05.07.13 07:14
Оценка:
Здравствуйте, wraithik, Вы писали:

W>Он захотел HTTPS. А мне надо через HTTP.

Кто захотел? Web-сервер? Тогда надо там настраивать...
Re[3]: Ошибка авторизации при доступе к веб-сервису
От: Nikolay_Ch Россия  
Дата: 05.07.13 07:15
Оценка:
Здравствуйте, wraithik, Вы писали:

W>Он захотел HTTPS. А мне надо через HTTP.

W>

W>Указанная схема URI "http" недопустима. Ожидалась "https".
W>Имя параметра: via

Может вы используете WCF вместо обычного веб-сервиса?
Re[4]: Ошибка авторизации при доступе к веб-сервису
От: wraithik Россия  
Дата: 05.07.13 10:17
Оценка:
Здравствуйте, Nikolay_Ch, Вы писали:

N_C>Здравствуйте, wraithik, Вы писали:


W>>Он захотел HTTPS. А мне надо через HTTP.

N_C>Кто захотел? Web-сервер? Тогда надо там настраивать...

Проблема решена, через ручную настройку биндинга. Из дома пришлю код.
Re[4]: Ошибка авторизации при доступе к веб-сервису
От: wraithik Россия  
Дата: 05.07.13 10:18
Оценка:
Здравствуйте, Nikolay_Ch, Вы писали:

N_C>Здравствуйте, wraithik, Вы писали:


W>>Он захотел HTTPS. А мне надо через HTTP.

W>>

W>>Указанная схема URI "http" недопустима. Ожидалась "https".
W>>Имя параметра: via

N_C>Может вы используете WCF вместо обычного веб-сервиса?
Нет, веб-сервис на 1С писан, она про такие умные слова, как WCF, не знает
Re: Вот так надо:
От: wraithik Россия  
Дата: 05.07.13 10:52
Оценка:
System.ServiceModel.EndpointAddress ep = new System.ServiceModel.EndpointAddress("http://localhost/tsd/ws/wsTSD.1cws");
System.ServiceModel.BasicHttpBinding binding = new System.ServiceModel.BasicHttpBinding();

binding.Security.Mode = System.ServiceModel.BasicHttpSecurityMode.TransportCredentialOnly;
binding.Security.Transport.ClientCredentialType = System.ServiceModel.HttpClientCredentialType.Basic;


srvTSD.TSDPortTypeClient ws = new srvTSD.TSDPortTypeClient(binding, ep);
ws.ClientCredentials.UserName.UserName = "web";
ws.ClientCredentials.UserName.Password = "1";
ws.Open();
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.