OData — простая аутентификация службы данных

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

Мне не нужна аутентификация домена или аутентификация форм.

Я много читал об аутентификации здесь:

http://franssenden.wordpress.com/2010/06/14/custom-security-odata-service-wcf-data-services/

http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/06/03/10482.aspx

http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/01/15/10119.aspx

http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/01/10/10100.aspx

К сожалению, все это требует оооочень много работы. Больше всего создание собственного IHttpModule. Должно быть более простое решение.

Я знаю, что когда я создаю контекст объекта на клиенте (WPF), я могу добавить учетные данные.

Uri uri = new Uri("http://localhost/myapp/odata.svc");

MyEntities ent= new MyEntities (uri);
ent.Credentials = new NetworkCredential("token", "zx5as9vxc5sa9h0vb6523cv56");

Но где я могу их прочитать (без реализации собственного IHttpModule)?

Я подумал, что могу использовать что-то в классе, например, реализацию службы данных:

protected override void OnStartProcessingRequest(ProcessRequestArgs args)
{
 string cred = args.OperationContext.AbsoluteRequestUri.UserInfo;
}

Я не знаком с UserInfo, но описание для него означает «Получает имя пользователя, пароль, ...)

Итак, у меня два основных вопроса:

  1. Где я могу прочитать включенные учетные данные, набрав ent.Credentials = new NetworkCredential("token", "zx5as9vxc5sa9h0vb6523cv56");

  2. Где я могу (если могу) установить UserInfo в клиентском приложении и использовать его в методе OnStartProcessingRequest.

С уважением, Даниэль Сковронски


person Daniel Skowroński    schedule 17.08.2010    source источник


Ответы (1)


Существует серия сообщений об аутентификации и службах данных WCF (которые представляют собой реализацию протокола OData в .NET): http://blogs.msdn.com/b/astoriateam/archive/tags/authentication/

Там вы сможете найти гораздо больше информации (включая примеры кода).

person Vitek Karas MSFT    schedule 18.08.2010
comment
Спасибо, я использовал blogs.msdn.com/b/astoriateam/archive/2010/07/21/ для создания функции проверки подлинности. Я сделал это без создания пользовательского HttpModule, просто SSL + client evnt ctx.SendingRequest +=new EventHandler‹SendingRequestEventArgs›(OnSendingRequest); + серверная сторона в событии OData Service protected override void OnStartProcessingRequest(ProcessRequestArgs args) - person Daniel Skowroński; 25.08.2010