2010-08-17 66 views
3

我想向數據服務添加簡單身份驗證,目前僅限於通過簡單令牌限制特定應用程序的訪問。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方法中使用它。

問候, 丹尼爾Skowroński

回答

3

有一系列的職位有關身份驗證和WCF數據服務(這是.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 + =新的EventHandler (OnSendingRequest); +服務器端在OData服務事件中保護覆蓋無效OnStartProcessingRequest(ProcessRequestArgs參數) – 2010-08-25 12:38:47