|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
Коллеги! У кого есть положительный опыт в связке Делфей с безопасными веб-сервисами? Нужно создать клиента для доступа к готовому веб-сервису, в котором имеется авторизация (увы ). А именно - надо передать логин и пароль к сервису, но через WS-Security. Стандартный компонент HTTPRIO не создает блоки типа UsernameToken. Поиск дополнительных библиотек успехом не увенчался. Вручную "запихивать" эти блоки в SOAP-заголовки на низком уровне HTTP тоже не срослось, вот что нашел: http://www.delphigroups.info/2/8/347743.html да и сложно это. Помогите, пожалуйста. P.S. Извиняюсь, что тему создаю сразу в двух разделах - накипело, все праздники бьемся. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2010, 02:40 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
ну если сложно не хотите, тогда просто берите к примеру Silverlight и дружите его с сервисом парой кликов мышью. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2010, 10:53 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
К сожалению, доступ к сервису нужно реализовать в существующем проекте, написанном на Delphi :( Таковы требования. А за ответ спасибо - посмотрю для себя для самообразования. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2010, 15:47 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
когда-то тоже был ярым поклонником Delphi, но с течением времени и смотря на прогресс решил передраться на C# ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2010, 19:30 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
черд не дописал и нажал Ctrl+Enter. ... решил перебраться на C# и Silverlight т.к. он мне был очень симпатичен. решение принималось в конце 2008 и сейчас я не жалею что перебрался именно на него, потому что имею работу на этой замечательной технологии. чего и вам советую. p.s. просто нужно признать "делфи может не все" и что-то с этим делать. p.p.s. да и старый он, этот Делфи7, хотя до сих пор остались теплые чувства к VCL ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2010, 19:35 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
escaper_, К сожалению, мы в подобной же ситуации вынуждены были просто использовать другой способ аутентификации на сервисе. Но там был наш сервис и нам не сложно было включить basic-аутентификацию... Я так понимаю, в вашем случае это не сработает? Тогда из запасных вариантов мы рассматривали еще такой: Разработать на .Net 3.0 (кстати, не исключено, что хватило бы и 2.0, WSE уже с версии 2.0 поддерживает все, что надо) маленькую библиотеку, которая будет всего лишь работать с нашим сервисом. Саму библиотеку реализовать в виде COM-библиотеки и уже использовать из унаследованного кода. Основным недостатком было требование наличия .Net. К сожалению, время тогда поджимало, и ничего особо искать мы не стали. Но при беглом осмотре мне не удалось найти ни одной приличной native библиотеки с поддержкой полного стека WS-* спецификаций, ни для Delphi, ни в виде COM. Встречались C++, но там активно использовались шаблоны т.е. бинарной совместимости не было и в помине (да и нет до сих пор уверенности, что именно они позволяли делать). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2010, 10:26 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
уТКакогда-то тоже был ярым поклонником Delphi, но с течением времени и смотря на прогресс решил передраться на C# У нас пока вариантов нет. В крайнем случае - делать промежуточное приложение, как предлагает МихаилР. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 07:42 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
МихаилРescaper_, К сожалению, мы в подобной же ситуации вынуждены были просто использовать другой способ аутентификации на сервисе. Но там был наш сервис и нам не сложно было включить basic-аутентификацию... Я так понимаю, в вашем случае это не сработает? Не сработает, сервис не нашей разработки. Пока в качестве временного решения просто отключили аутентификацию на сервере (чтобы реализовать функционал). Но это не выход. МихаилР К сожалению, время тогда поджимало, и ничего особо искать мы не стали. Но при беглом осмотре мне не удалось найти ни одной приличной native библиотеки с поддержкой полного стека WS-* спецификаций, ни для Delphi, ни в виде COM. Встречались C++, но там активно использовались шаблоны т.е. бинарной совместимости не было и в помине (да и нет до сих пор уверенности, что именно они позволяли делать). Очень жаль... Однако не верю, что задачка не решаемая. Будем смотреть еще amazonservices: Сержescaper_, пару месяцев назад гуглил эту тему. Легкого пути там нет. Попробуй поискать что-то вроде "delphi 7 amazon ws security" там народ пытался из делфи 7 с амазоновскими сервисами работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 07:45 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
escaper_Не сработает, сервис не нашей разработки. Пока в качестве временного решения просто отключили аутентификацию на сервере (чтобы реализовать функционал). Но это не выход. Я не знаю всей вашей специфики, но возможно (в некоторых случаях это даже оправдано), можно попробовать использовать Proxy-сервис. Т.е. вы разрабатываете сервис, который выполняет ровно 2 вещи: аутентификацию ваших пользователей, и прокидывание вызова до нужного вам сервиса. А тот сервис полностью доверяет вашему proxy-сервису (т.е. там либо аутентификация от фиксированной записи, либо просто с определенного адреса разрешен анонимный вход, ...). Однако этот вариант возможен лишь при условии, что: 1. Сервис находится во внутренней сети (чтобы можно было доверять proxy). 2. Сервис не делит права по пользователям. Потенциально предложенный мною вариант можно развить до "proxy авторизует по одному протоколу, затем из некоторого защищенного хранилища достает credential для указанного пользователя и уже прокидывает дальше запрос с этими параметрами". Подход в целом не такой уж и редкий - большинство реализаций SSO так и сделано (и если у вас уже есть некоторое SSO-решение, можно использовать его базу). Но сами понимаете, что у вас появляется дополнительная головная боль и все заради обращения к одному сервису... Могу еще добавить, что в WCF 4.0 появляется специальный тип сервиса Routing Service, который потенциально предназначен для подобных задач (т.е. перенаправлять запросы не зная их схемы и семантики). Не знаю, можно ли там решить конкретно вашу задачу, но посмотрите на всякий случай здесь ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 08:14 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
Я бы тоже посоветовал сделать фронт-енд сервис, если с нативными либами туго. >>Не грози Владимирскому Централу, попивая виски у себя в Лондоне ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 10:02 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
МихаилР, Sysobjects, интересное решение вы предлагаете. Но опять же неприменимо к нашему проекту. Наши разработка - это толстый клиент безо всякого веба, его функции - автоматическая проверка и обработка файлов на сервере. Задачка - нужно добавить еще один модуль обработки, который должен обращаться к веб-приложению, в составе которого имеется нужный нам сервис с авторизацией. Тем не менее, всем вам спасибо за ответы. Вопрос задавал на трех форумах - в остальных топики вообще пустые, увы :( ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2010, 21:36 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
как вариант можно взглянуть на iMacros, много возможностей по работе с вебом. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2010, 17:55 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
Проблему решили, но не так, как хотелось бы, а обходным путем. С аутентификацией в Delphi 7 и WS-Security долго бились, потеряли массу времени и сил. Похоже, в этом варианте задача не имеет решения. Нашли простое решение (в рамках платформы Intersystems Cache', на которой был реализован веб-сервис) - подстановка логина и пароля в адресную строку. Есть пример исходного кода: var x:THTTPRio; res_vpsk: VPSK; wsdlLocation: string; username: string; password: string; begin wsdlLocation:= 'http://localhost:57772/csp/test/CD.MonitoringService.cls?WSDL=1';; username:= '0830'; password:= 'password'; X := THTTPRio.Create(nil); //при указании расположения WSDL передаем имя пользователя и пароль, иначе процесс не сможет прочитать WSDL X.WSDLLocation := wsdlLocation + '&&CacheUserName=' + username + '&&CachePassword=' + password; X.Service := 'MonitoringService'; X.Port := 'MonitoringServiceSoap'; res_vpsk := (X as MonitoringServiceSoap).test('1'); ShowMessage(res_vpsk.FIO+' '+res_vpsk.STATE); end; Надеюсь, что вам это тоже поможет. И вы сэкономите массу времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2011, 19:44 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
escaper_, Спасибо, что нашли время и рассказали о результатах (если честно, спустя 2 годя я даже не ожидал - приятно!). По правде говоря, я уже больше года не работаю в компании, в которой вставала подобная проблема - а в нынешней, использование Delphi практически отсутствует (хотя компания аутсорсер). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2011, 13:09 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
МихаилР, Да, проблема по-прежнему актуальна и для других. Как раз после такого вопроса, поступившего по электронке, и ответил здесь. Так по крупицам и соберем базу знаний ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2011, 22:19 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
escaper_, Возможно, стоит тогда разместить ответ еще и в разделе Cache. Все-таки решение опирается на особенности их реализации. Потому что то, решение, которое использовали вы это действиетельно workaround весьма специфичный. Все SOAP-стандарты, на сколько мне известно, работают на базе POST-запросов, поэтому передача чего-либо в строке запроса просто не будет работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2011, 11:57 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
аналогично долго бился с подобной проблемой, пока не наткнулся на ее решение на эмбаркадеровском форуме https://forums.embarcadero.com/thread.jspa?threadID=44370 читать пост Jean-Marie Babet от Oct 9, 2010 2:51 PM ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2012, 12:47 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
HooliGUNаналогично долго бился с подобной проблемой, пока не наткнулся на ее решение на эмбаркадеровском форуме https://forums.embarcadero.com/thread.jspa?threadID=44370 читать пост Jean-Marie Babet от Oct 9, 2010 2:51 PM Спасибо! Как раз нужно. уТКаp.s. просто нужно признать "делфи может не все" и что-то с этим делать. не подтверждается ) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2012, 16:46 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
Alex Sне подтверждается ) Увы, как показывает данный топик - проблемы есть. Причем в первую голову, не хватает инструментов для создания многозвенных распределенных систем. А это - основа крупного корпоративного ПО сегодня. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 10:03 |
|
реализация Ws-securty в Delphi 7
|
|||
---|---|---|---|
#18+
Alex SHooliGUNаналогично долго бился с подобной проблемой, пока не наткнулся на ее решение на эмбаркадеровском форуме https://forums.embarcadero.com/thread.jspa?threadID=44370 читать пост Jean-Marie Babet от Oct 9, 2010 2:51 PM Спасибо! Как раз нужно. уТКаp.s. просто нужно признать "делфи может не все" и что-то с этим делать. не подтверждается ) Бьюсь с этой же проблемой, ссылка на форум уже умерла. Не поделитесь решением Plz? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2017, 10:47 |
|
|
start [/forum/topic.php?fid=19&fpage=3&tid=1396742]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 141ms |
0 / 0 |