2013-04-17 2 views
1

Je souhaite protéger le service OData avec l'authentification personnalisée associée à une table utilisateur dans la base de données. J'ai été obssessed avec ce problème et cherché des solutions depuis longtemps en vain. Je veux dire, oui, il y a beaucoup d'articles sur le web mais ils sont juste assez triviaux, par exemple en implémentant IPrincipal ou IHttpContext avec l'authentification de base. Notamment, beaucoup d'entre eux peuvent remonter jusqu'à 2010 où OData n'est pas aussi mature qu'aujourd'hui. Je me demande donc s'il existe une solution rapide à l'authentification personnalisée basée sur la base de données.Comment implémenter l'authentification personnalisée sur OData

Toute guidance serait grandement appréciée!

+0

Vous ne savez pas ce que vous voulez dire par authentification personnalisée associée à une table utilisateur dans la base de données. – Paparazzi

+0

@Blam Je veux dire en fait, j'ai déjà une base de données dans laquelle les informations d'identification de l'utilisateur sont stockées. Par conséquent, l'authentification ASP.NET par défaut ne correspondra pas à la situation. –

Répondre

2

OData et l'authentification (et même l'autorisation d'ailleurs) sont sans rapport pour la plupart par conception. Cela ne signifie pas que les piles OData ne peuvent pas fournir un bon support pour l'authentification et l'autorisation, mais simplement que le protocole OData lui-même ne le commente pas. Mis à part le protocole, l'API Web et les services de données WCF travaillent à obtenir une meilleure assistance ici. Parlant en tant que membre de la communauté .NET (et non en tant qu'employé de Microsoft), je pense qu'il est raisonnable de s'attendre à ce que ces piles implémentent des API d'autorisation. Encore une fois, je tiens à dire explicitement que je n'essaie pas de cacher ou de divulguer des plans ici - je ne fais que spéculer sur l'endroit où vont l'authentification et l'autorisation. En un mot, si j'étais à votre place, je trouverais l'intersection la plus simple possible entre OAuth2 et l'authentification basée sur les revendications et cela fonctionnerait pour le moment. L'élaboration de vos revendications et de votre authentification signifie maintenant que vous ne devriez envisager d'intégrer le code d'autorisation actuel que plus tard.

+0

Merci pour votre réponse. Oui, OAuth gagne en popularité ces derniers temps et est certainement une solution appropriée. Cependant, dans mon cas, ce n'est pas viable parce que je dois baser l'authentification sur une base de données interne qui est déjà là. Quoi qu'il en soit, je me demande s'il est approprié pour moi d'utiliser l'authentification de base avec un en-tête personnalisé attaché à chaque requête. –

+0

Approprié n'est pas quelque chose que je peux commenter puisque je ne connais pas très bien votre scénario. OAuth est toujours un candidat complètement viable - vous auriez juste un serveur d'OAuth qui traite ces informations d'identification. Une alternative serait l'authentification par formulaire. Je pense que le point fondamental que j'essayais de faire est que OData ne se soucie pas vraiment de ce que vous utilisez pour vous authentifier. –

+0

Notez également que l'utilisation d'un en-tête personnalisé (ou autre chose que l'un des mécanismes d'authentification "standard") créerait des problèmes d'écosystème. Par exemple, vous pourriez ne pas être en mesure d'obtenir vos données dans Excel. Si vous utilisez les formulaires auth ou Windows auth ou OAuth, je pense que vous devriez être en mesure de faire fonctionner l'essentiel de l'écosystème OData. –

Questions connexes