пятница, декабря 15, 2006

Разработка custom UsernameTokenManager

Если вы разрабатываете собственный UsernameTokenManager, и столкнулись с проблемой:

Microsoft.Web.Services3.Security.SecurityFault: UsernameToken is expected but not present in the security header of the incoming message.
   at Microsoft.Web.Services3.Design.UsernameOverTransportAssertion.ServiceInputFilter.ValidateMessageSecurity(SoapEnvelope envelope, Security security)
   at Microsoft.Web.Services3.Security.ReceiveSecurityFilter.ProcessMessage(SoapEnvelope envelope)
   at Microsoft.Web.Services3.Pipeline.ProcessInputMessage(SoapEnvelope envelope)
   at Microsoft.Web.Services3.WseProtocol.FilterRequest(SoapEnvelope requestEnvelope)
   at Microsoft.Web.Services3.WseProtocol.RouteRequest(SoapServerMessage message)
   at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
   at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)
   at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

- то проверьте, что у вас правильно сконфигурирована секция microsoft.web.services3/security/securityTokenManager в web.config. И убедитесь что в атрибуте namespace указано «http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd».

Аутентификация в веб-сервисах 2

(Продолжние)

 

Продолжаю в свободное время разбираться с проблемой аутентификации в веб-сервисах. От первой идеи написать все самому я, слава Богу, отказался :) Потом пытался использовать код из статьи «How to: Perform Custom Authentication Using SOAP Headers», но как-то не верилось что нет более правильного метода. Предложенный метод выглядел как-то уж слишком custom.

И «правильный» метод существует — Web Service Enchancements (WSE) и руководство по безопасности веб-сервисов.

Коцептуально, существует два способа аутентификации: аутентификация через посредника (brokered) и непосредственная аутентификация (direct). Грубо говоря, аутентификация через посредника (Microsoft Passport) хороша когда клиент не доверяет сервису и не хочет ему предоставлять свои credentials, например номер своей кредитки при покупке в он-лайн магазине. Так же, метод хорош для так называемых «single sign-on» концепций. (Примечание: все «за» и «против» для обоих методов собраны в руководстве.)

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

Ну а дальше, открываем руководство, Глава 1 «Authentication Patterns», раздел «Direct Authentication» и делаем как там написано.

 

P.S. надо б еще прототипчик наваять, что б все усвоилось…

пятница, декабря 08, 2006

Хранение двоичных данных в MS SQL 2005

Microsoft пишет, что для хранения двоичных данных (картинок в базе) в MS SQL 2005 нужно использовать новый тип varbinary(max), а не image как в MS SQL 2000. Говорят что с ним легче работать чем с image.

"However, unlike the older image data type where the application needed to use an entirely different data access mechanism to read and write the binary data, the new varbinary(max) data type enables applications to access the data stored in the same way as the other SQL Server data types."

Upgrading MSDE 2000 to SQL Server 2005 Express

четверг, декабря 07, 2006

Проблема с HtmlElement.NextSibling

Нашел баг в Framework.NET 2.0 в реализации свойства HtmlElement.NextSibling. Все у кого случается вот такая ошибка:

Unable to cast COM object of type 'System.__ComObject' to interface type 'IHTMLElement'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{3050F1FF-98B5-11CF-BB82-00AA00BDCE0B}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

проголосуйте за соответствующий feedback на сайте Microsoft.

вторник, декабря 05, 2006

Аутентификация в веб-сервисах



Условия задачи: имеется сайт со своей системой аутентификации пользователей: использованы стандартный Membership-сервис и Forms-аутентификация. Для этого сайта разрабатывается Windows Forms клиент, который будет «общаться» с сайтом через веб-сервисы.


Задача: правильно обеспечить безопасность веб-сервисов и разрешить доступ к ним только аутентифицированным пользователям.


Вроде как стандартная задача. Думаю я не первый с ней сталкиваюсь. Но есть несколько вариантов решения. Пока сижу учу матчасть.

понедельник, декабря 04, 2006

Resource Refactoring Tool

Обычно, когда пишу какое-то новое приложение (скорее даже прототип, или версию «0») то не хочется тратить силы и время на «вылизывание» кода. В частности, это относится к строковым константам в коде, которые по-хорошему должны быть вынесены в .RESX-файлы. И каждый раз мне такой код не давал потом спать спокойно и снился по ночам в кошмарах, потому что это «не правильно».


Resource Refactoring Tool
Проблему решила утилита Resource Refactoring Tool, которая помагает быстро вынести строковые константы в .RESX-файлы. Теперь протопиы я пишу с константами прям в коде и потом, если понадобиться, то быстро выношу их в .RESX-файлы.