2010-08-17 7 views
3

Я хотел бы добавить простую аутентификацию в Data Services, на данный момент только для ограничения доступа к конкретным приложениям с помощью простого токена.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

К сожалению, все это требует loooot работы. Больше всего создается пользовательский 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 = новый NetworkCredential ("маркер", «zx5as9vxc 5sa9h0vb6523cv56");

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

С уважением, Daniel Skowronski

ответ

3

Там в серии пост о проверке подлинности и WCF Data Services (который является реализация .NET протокола OData): http://blogs.msdn.com/b/astoriateam/archive/tags/authentication/

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

+1

Спасибо, я использовал http://blogs.msdn.com/b/astoriateam/archive/2010/07/21/odata-and-authentication-part-6-custom-basic-authentication.aspx для создания функций аутентификации , Я сделал это без создания настраиваемого HttpModule, просто SSL + клиент evnt ctx.SendingRequest + = new EventHandler (OnSendingRequest); + сервер в OData Service защищенное событие переопределяет void OnStartProcessingRequest (аргументы ProcessRequestArgs) –