2010-08-17 7 views
3

Je voudrais ajouter une authentification simple aux services de données, pour l'instant seulement pour restreindre l'accès à des applications particulières par un jeton simple.OData - Authentification simple du service de données

Je n'ai pas besoin d'authentification de domaine ou d'authentification par formulaire.

Je lis beaucoup sur l'authentification ici:

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

Malheureusement tout exige une loooot de travail. Surtout en créant un IHttpModule personnalisé. Il devrait y avoir une solution plus simple.

Je sais que lorsque je crée un contexte d'objet sur le client (WPF), je peux ajouter des informations d'identification.

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

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

Mais où puis-je les lire (sans implémentation de IHttpModule personnalisé)?

Je pensais que je peux utiliser quelque chose dans la classe qui est la mise en œuvre du service de données par exemple:

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

Je ne suis pas au courant de UserInfo mais la description pour elle signifie « Obtient le nom d'utilisateur, mot de passe,. ..)

J'ai donc deux questions principales:

  1. Où puis-je en tapant lettres de créance inclus ent.Credentials = new NetworkCredential ("jeton", « zx5as9vxc 5sa9h0vb6523cv56 ");

  2. Où puis-je (si je le peux) définir UserInfo sur l'application cliente et l'utiliser dans la méthode OnStartProcessingRequest.

Cordialement, Daniel Skowroński

Répondre

3

Il y a une série de post sur l'authentification et WCF Data Services (qui est la mise en œuvre .NET du protocole OData): http://blogs.msdn.com/b/astoriateam/archive/tags/authentication/

Vous devriez être en mesure de trouver beaucoup plus d'informations là (y compris des exemples de code).

+1

Merci, j'ai utilisé http://blogs.msdn.com/b/astoriateam/archive/2010/07/21/odata-and-authentication-part-6-custom-basic-authentication.aspx pour créer une fonctionnalité d'authentification . Je l'ai fait sans créer de custom HttpModule personnalisé, simplement SSL + client evnt ctx.SendingRequest + = new EventHandler (OnSendingRequest); + côté serveur dans l'événement de service OData protected override void OnStartProcessingRequest (Arguments ProcessRequestArgs) –

Questions connexes