Добрый день.

Где хранить аутентификационные данные для внешних веб сервисов, если учетные данные общие для всех пользователей?

У меня есть 2 варианта:
1) Хранить из непосредственно в исходниках сервиса

var client = new Namespace.SomeService();
client.Credentials = new NetworkCredential("login", "pass", "domain");

2) Хранить их в системных настройках, для этого придется создать 3 настройки и при вызове сервиса постоянно обращаться к ним.

Возможно есть еще какие то варианты которые я упускаю.
Так же меня интересуют вопросы касательно безопасности и быстродействия каждого из вариантов.

Нравится

1 комментарий

Рекомендую использовать первый вариант, т.к. при втором варианте будет обращение к БД (если настройки не кэшируются).
Если планируется изменение учетных данных, то использовать второй вариант, но установив признак кэшируется.

Показать все комментарии

Всем доброго дня.
Столкнулся с проблемой настройки веб-сервиса в BPMonline Sales 7.7.0.2293

        [ServiceContract]
        public interface IService
        {
                [OperationContract]
                string TestService(string param1, string param2);
        }
        public class TestServiceBpm : IService
        {
                public string TestService(string param1, string param2)
                {
                        ...
                }

..\Terrasoft.WebApp\ServiceModel\TestServiceBpm.svc:

%@ ServiceHost Language="C#" Debug="true" Service="Namespace.TestServiceBpm" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>

..\Terrasoft.WebApp\ServiceModel\http\services.config:

behaviorConfiguration="BaseServiceBehavior" name="Namespace.TestServiceBpm">
 
  name="TestService"
  binding="webHttpBinding"
  behaviorConfiguration="RestServiceBehavior"
  bindingNamespace="http://Terrasoft.WebApp.ServiceModel"
  contract="Namespace.IService" />
  address="soap" binding="basicHttpBinding" contract="Namespace.IService" />
  address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
 >

web-config :

path="ServiceModel/TestServiceBpm.svc">
    >
      >
        users="*" />
      >
    >
  >

При попытке достучаться через браузер (http://hostName/1/ServiceModel/TestServiceBpm.svc)
получаю ошибку

Exception Message: An XML comment cannot contain '--', and '-' cannot be the last character. Line 92, position 7.
...

при попытке добавить ServiceReference в VS:

There was an error downloading 'http://hostName/1/ServiceModel/TestServiceBpm.svc/_vti_bin/ListData.svc/$metadata'.
The operation has timed out
Metadata contains a reference that cannot be resolved: 'http://hostName/1/ServiceModel/TestServiceBpm.svc'.
The remote server returned an unexpected response: (302) Found.
Too many automatic redirections were attempted.
If the service is defined in the current solution, try building the solution and adding the service reference again.

Подскажите пожалуйста, в чем моя ошибка!

Нравится

3 комментария

Добрый день!

Мы поддерживаем создание веб-сервисов только через конфигурацию.
Подробную информацию по настройке Вы найдете на нашей академии по ссылке - https://academy.terrasoft.ua/documents/technic-sdk/7-8-0/integraciya-s-…

Сергей, добрый день!
Не очень понимаю что вы имеете ввиду. Есть ссылки:
http://www.community.terrasoft.ua/forum/topic/16414
http://www.community.terrasoft.ua/forum/topic/16393
из которые понятно, что создавать веб-сервисы в 7.х можно так, как пытаюсь я.

Добрый день!
Первое:
..\Terrasoft.WebApp\ServiceModel\TestServiceBpm.svc:

<%@ ServiceHost Language="C#" Debug="true" Service="Namespace.TestServiceBpm" Factory="System.ServiceModel.Activation.ServiceHostFactory" %>

Далее, вы обращаетесь в конфигурацию под номером 1, реализация сервиса в точно в этой конфигурации?

Ошибка

Exception Message: An XML comment cannot contain '--', and '-' cannot be the last character. Line 92, position 7.
...

говорит о том, что где-то в конфиге есть ошибка

Показать все комментарии

При входе под доменным пользователем используя веб-сервис, вываливается ошибка: "Не возможно использовать доменную авторизацию для выбранной базы данных". Но через веб-сервис можно залогиниться под supervisor. Как включить доменную авторизацию для веб-сервсиса?
Установлен Terrasoft XRM. Настроена доменная авторизация, которая работает только в SQL конфигурации.

Нравится

11 комментариев

При авторизации Windows NT следует следить за доверительными отношениями. Если пользователь одного домена подключается к SQL Server в другом домене, то между этими доменами должны быть настроены доверительные отношения

"Киселёв Марк Евгеньевич" написал:При авторизации Windows NT следует следить за доверительными отношениями. Если пользователь одного домена подключается к SQL Server в другом домене, то между этими доменами должны быть настроены доверительные отношения

Домен один. Других нет. При чем здесь это?

Может просто в скуль сервере не настроена просто авторизация смешанный и авторизация Windows

"Киселёв Марк Евгеньевич" написал:Может просто в скуль сервере не настроена просто авторизация смешанный и авторизация Windows

Настроена, читайте внимательнее мое сообщение:
"Романенко Семён" написал:Установлен Terrasoft XRM. Настроена доменная авторизация, которая работает только в SQL конфигурации.

Семён, Марк, здравствуйте!

На данный момент компания Террасофт не декларируем работу веб-сервисов с использование доменной авторизации.

Terrasoft Support Team

Здравствуйте Владимир, как скоро данная возможность появиться?

Здравствуйте, Семён.

Вся сложность в том, что Вы хотите соединится используя доменную авторизацию не находясь в домене. В противном случае зачем же Вам тогда работать через Web-сервисы.

Данная возможность не планируется, т.к. для ее решения придется пойти в разрез безопасности домена Windows. Если это реализовать -- то Вы получите огромную дыру в безопасности.

Если использование доменной авторизацией для Вас является обязательной, то предлагаю Вам самое оптимальное решение: работать через VPN-соединение. В таком случае Вы не только сможете использовать доменную авторизацию, но будет возможность соединятся с базой данных Terrsoft посредством обычного соединения.

"Александр Кравчук" написал:Если использование доменной авторизацией для Вас является обязательной, то предлагаю Вам самое оптимальное решение: работать через VPN-соединение. В таком случае Вы не только сможете использовать доменную авторизацию, но будет возможность соединятся с базой данных Terrsoft посредством обычного соединения.

Это будет работать если удаленный компьютер был введен в домен. Но если удаленный комп. не в домене, то авторизоваться уже нельзя. Кстати почему нельзя вручную вбить доменный логин и пароль?

Семен, если удаленный компьютер не в домене, то для такого пользователя не нужно использовать доменную авторизацию. Я конечно не вникал глубоко в задачу, но вообще не представляю как такое возможно. В любом случае, Александр абсолютно прав - используйте VPN. Для этого не обязательно вводить машину в домен.

"Романенко Семён" написал:Кстати почему нельзя вручную вбить доменный логин и пароль?

Потому что это уже не доменная авторизация. Это уже классическая SQL авторизация. Если говорить на техническом уровне, то строка соединения с БД при использовании доменной авторизации вообще не содержит имени пользователя и пароля. Т.е. введенные данные не получается использовать. Тут работают немного другие механизмы.

"Карло Сергей" написал:Семен, если удаленный компьютер не в домене, то для такого пользователя не нужно использовать доменную авторизацию. Я конечно не вникал глубоко в задачу, но вообще не представляю как такое возможно.
Представить такое легко, например мне дома нужно подключиться по VPN и поработать в CRM, но у меня есть только доменная авторизация, как быть? Вести вторую базу sql-учеток, как-то совсем грустно если у вас огромное количество пользователей, и все сервисы привязаны к AD. Понятно, что разработчики используют встроенные механизмы авторизации windows, но почему не учли возможность ручного ввода логина и пароля, это не понятно. Сделать хотя бы сервис, который бы обрабатывал ручной ввод доменного логина и пароля и прикрутить его к Radius серверу. Сейчас многие продукты стремятся к web-based и интеграции с Active Directory, у вас же получается, что если хочешь использовать web-service, то не можешь авторизоваться под доменной учеткой. Смысл тогда делать web-service, просто для маркетинговой галочки? Тоже самое и с доменной авторизацией, получается что это не доменная, а "Windows авторизация". Попробуйте на машине не в домене поставить галку "Использовать доменную авторизацию", подставятся данные локального пользователя. Вопрос к разработчикам: Коллеги можно ли ожидать каких-то улучшений/изменений в описанные мною вопросах? Спасибо и не судите строго.

Роман, добрый день. На текущий момент, никакие изменения, относительно описанных Вами вопросов, не планируются. На счет маркетинговой галочки, вы не совсем правы. Достаточно большое количество наших пользователей используют подключение через web-сервисы и не только в базовой версии, но и в проектных решениях в том числе.

Показать все комментарии