Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пример использования WSE, переход от WSE 2.0 к ЦЫУ 3.0 
:(
    Опции темы
vzf
Дата 13.6.2007, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 10.9.2005

Репутация: нет
Всего: 5



Здравствуйте.

У меня возникла необходимость написать программу, демонстрирующую  реализацию WS-Security от Microsoft.

Нашел в интернете  пример.

В примере используется WSE 2-ой версии, но так как сейчас уже есть WSE 3-ей версии, я решил использовать именно его. Но возникли проблемы.

1) Если в метод вебслужбы добавить следующий код

Код

 [WebMethod]
    public string HelloWorld() {

        // Get the SoapContext for the response
        SoapContext myResponse = ResponseSoapContext.Current;

        // Create the same Username token for the return message
        UsernameToken myToken = new UsernameToken("anyname", "Secure$Password", PasswordOption.SendNone);

        // Add the Username token to the SoapContext
        myResponse.Security.Tokens.Add(myToken);

        // Sign the message with the token
        myResponse.Security.Elements.Add(new MessageSignature(myToken));
        return "Hello World!!!";
    } 


То при запуске службы и заходе на ее урл в браузере, получаем 500 - ю ошибку, хотя клиентская программа нормально отрабатывает и получает заветную строчку "Hello World!!!"

2) Если в клиентской программе попытаться вычислить подпись для токена при помощи MessageSignature, то значение подписи будет равно null, поэтому выбрасывается эксепшн.
Код



 ServiceWse s = new ServiceWse();
            s.SetPolicy("OurProjectPolicy");
            s.SetClientCredential(new UsernameToken("username", "Secure$Password", PasswordOption.SendNone));


            // Get the SoapContext object for the outgoing message.
            SoapContext myContext = s.RequestSoapContext;
            // Instantiate a new UsernameToken
            UsernameToken myToken = new UsernameToken("username",
                "Secure$Password", PasswordOption.SendNone);
           
            // Add the token to the SoapContext.
            myContext.Security.Tokens.Add(myToken);

            // Generate a signature using the username token, 
            // and add the signature to the SoapContext.
            MessageSignature signature = new MessageSignature(myToken);
         
            if (signature.SignatureValue == null)
            {
                Console.WriteLine("Signature value is empty !"); // SignatureValue == null ????
            }
            
            Console.WriteLine("Signature = " + signature.SignatureValue);

            myContext.Security.Elements.Add(new MessageSignature(myToken));
            
            
            string msg = ""; 
            try
            {
                s.HelloWorld();
                Console.WriteLine("Web Service return: " + msg);
            }catch(Exception ex)
            {
                Console.WriteLine("There was an errors:");
                Console.WriteLine(ex.ToString());
            }



Да еще у меня варнинги пишутся

Код

Warning    10    'Microsoft.Web.Services3.SoapContext.Security' is obsolete: 'SoapContext.Security is obsolete. Consider deriving from SendSecurityFilter or ReceiveSecurityFilter and creating a custom policy assertion that generates these filters.'    C:\Documents and Settings\qqq\Мои документы\Visual Studio 2005\Projects\HelloService\Client\Client.cs    47    13    Client





Код

Warning    11    'Microsoft.Web.Services3.SoapContext.Security' is obsolete: 'SoapContext.Security is obsolete. Consider deriving from SendSecurityFilter or ReceiveSecurityFilter and creating a custom policy assertion that generates these filters.'    C:\Documents and Settings\qqq\Мои документы\Visual Studio 2005\Projects\HelloService\Client\Client.cs    60    13    Client


И точно такие же для сервиса, видимо это связанно с тем, что использую я WSE 3, а код взят из примера для WSE 2.

Кто нибудь может мне сказать что я делаю не так?


Это сообщение отредактировал(а) vzf - 13.6.2007, 01:33
--------------------
Java - Write Once, Test EveryWhere!
PM MAIL   Вверх
vzf
Дата 17.6.2007, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 10.9.2005

Репутация: нет
Всего: 5



Если убрать строчки 

Код


s.SetPolicy("OurProjectPolicy");
s.SetClientCredential(new UsernameToken("username", "Secure$Password", PasswordOption.SendNone));



в клиенте, то все работает, но подпись все равно получается null  smile

А мне надо добиться следущего, что клиент вызывает сервис и указывает свое имя и пароль и подпись, сервис проверяет эту информацию и если все в порядке, то возвращает результат. 
--------------------
Java - Write Once, Test EveryWhere!
PM MAIL   Вверх
vsamiev
Дата 13.9.2010, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 28.8.2007

Репутация: нет
Всего: нет



смог ли решить данную проблему, я столкнлся с такойже, помоги плиз
PM MAIL   Вверх
CYBERDREAM
Дата 13.9.2010, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 11
Всего: 28



пост трехлетней давности, а пользователь был в последний раз в октябре прошлого года, так что сомневаюсь 


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
vzf
Дата 13.9.2010, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 10.9.2005

Репутация: нет
Всего: 5



Привет, проблему решил, но сейчас не вспомню уже как ) Если дома найду исходники или отчет по задаче, то напишу как. Выложу проект, если найду его.
--------------------
Java - Write Once, Test EveryWhere!
PM MAIL   Вверх
vsamiev
Дата 13.9.2010, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 28.8.2007

Репутация: нет
Всего: нет



спасиб большое, жду с нетерпением
PM MAIL   Вверх
vzf
Дата 13.9.2010, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 10.9.2005

Репутация: нет
Всего: 5



Порылся на компе и похоже, что с этим примером я так и не закончил до конца, но нашел похожий, выполняющий те же задачи и сделал на его основе.

Исходники выложил здесь.

С какого сайта брал пример уже не помню, можешь поискать по слову "WSE30UsernameAssertion".


--------------------
Java - Write Once, Test EveryWhere!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0643 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.