29 votes

Authentification de base avec le service WCF REST sur autre chose que les comptes Windows?

Est-il un moyen propre à exposer un WCF REST service qui nécessite une authentification de base, mais où nous nous occupons de la réelle validation du nom d'utilisateur/mot de passe de nous-mêmes? Il semble que, lorsque vous dites WCF dans la configuration que vous souhaitez utiliser l'authentification de base, il vous oblige à activer l'authentification de base dans IIS IIS et ne peut faire l'authentification de base contre la fenêtre comptes.

Le seul hack, nous l'avons trouvée est de mentir à la WCF et dites-lui de sécurité n'est pas sur le service, puis faire de l'authentification à l'extérieur de la WCF de la pile à l'aide d'un générique IHttpModule (qui est propriétaire d'un fichier de configuration pour indiquer les Url ont d'authentification/autorisation).

Il semble qu'il devrait y avoir une meilleure façon. Quelqu'un a un?

9voto

hcoverlambda Points 400

La bibliothèque Contrib WCF REST permet cette fonctionnalité:

http://github.com/mikeobrien/WcfRestContrib

Il vous permet également de sécuriser des opérations individuelles.

4voto

CodingWithSpike Points 17720

est le nom d'utilisateur et un mot de passe sur le client comme:

cc.ClientCredentials.UserName.UserName = ReturnUsername();
cc.ClientCredentials.UserName.Password = ReturnPassword();

Ou sont-ils intégrés dans le corps du RESTE de message?

Si l'ancien, vous pouvez utiliser un personnalisé UserNamePasswordValidator: http://msdn.microsoft.com/en-us/library/aa702565.aspx

Si ce dernier, vous pouvez configurer le service pour qu'aucun problème de sécurité, et l'utilisation d'une coutume ServiceAuthorizationManager pour valider le contenu du message: http://msdn.microsoft.com/en-us/library/ms731774.aspx

Espérons que l'un ou l'autre qui l'aide! J'essaierais de poster un exemple de code & config, mais je suis @ home, et n'avez pas accès au code, ce qui est tout @ work.

4voto

Eric Hauser Points 3446

Voir Authentification de base personnalisée pour les services RESTful . L'approche de Pablo utilise la fonctionnalité d'intercepteur fournie via le kit de démarrage REST pour résoudre le problème. Si vous ne souhaitez pas dépendre du kit de démarrage REST, vous pouvez créer votre propre hôte de service et utiliser la fonctionnalité de récepteur fournie.

3voto

Eugene Yokota Points 43213

Si vous l'hébergez sur IIS, à l'aide de http personnalisé module est le chemin à parcourir. Vous pouvez apporter sur le capital au cours de la WCF côté sécurité d'accès du code. Voir l'Authentification HTTP de Base à l'égard des Non-Comptes Windows dans IIS/ASP.NET (Part 3 - Ajout de la WCF de Soutien). Voir aussi la Coutume l'Authentification HTTP de Base pour ASP.NET les Services Web .NET 3.5/VS 2008.

Si vous n'êtes pas à l'aide de IIS, vous devriez être en mesure de mettre en œuvre userNameAuthentication. Voir Enfin!!! Les noms d'utilisateur au cours du Transport de l'Authentification dans WCF.

1voto

atconway Points 4164

Oui absolument il ya un moyen. Vous avez besoin de la configuration personnalisée userNamePasswordValidationMode de la valeur de votre service et de pointer vers une classe avec une méthode surchargée qui peut contrôler et valider les informations d'identification fournies. Lors d'un Réparateur d'appel, ces informations d'identification lors de l'utilisation de l'authentification de Base dans sa propre forme doit être dans l'en-tête de requête. Avec cette méthode personnalisée, vous pouvez consulter les informations d'identification et de s'authentifier le client à votre service. Pas de Fenêtres ou de comptes de domaine, même nécessaire.

La bonne chose est que vous pouvez alors prendre que le contexte de la sécurité au niveau suivant et de fournir fine authrization au niveau de la méthode. Vous pourriez avoir des cas où un grand bassin de clients sont en mesure d'accéder au service, mais pas toutes les méthodes à l'intérieur (c'est à dire payé clients vs. non rémunéré). Dans ce cas, vous pouvez également fournir une autorisation au niveau de la méthode ainsi si nécessaire.

Ci-dessous est une étape-par-étape de la solution (avec trop d'étapes pour intégrer) par moi-même qui contient à la fois le besoin de sécurité et de configuration nécessaires pour avoir une complète solution. Le problème est souvent l'authentification de Base est utilisé sans assurer le Transport avec un certificat SSL et c'est mauvais. Assurez-vous de suivre toutes les étapes et vous permettra de mettre en œuvre l'authentification de Base sans la nécessité de n'importe quel type de comptes Windows ou de configuration sur votre WCF Réparateur à base de services.

Services RESTful: Authentification Des Clients À L'Aide De L'Authentification De Base

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X