IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Discussion :

Authentification multiple WCF Rest 4.0


Sujet :

Services Web

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par défaut Authentification multiple WCF Rest 4.0
    Bonjour à tous,

    J'ai développé un web service REST avec sécurité basic authentication qui roule sur https. Donc lorsque le client entre l'url du service il a une fenêtre de login pour s'authentifier. La solution actuelle fonctionne bien.
    Maintenant mon client me demande d'ajouter un paramètre côté serveur de manière à pouvoir activer l'authentification par certificat à la demande, donc un booléen de cette sorte:
    - UsingCert à false : basic http auth, (username + password)
    - UsingCert à true : basic http auth + certificat

    Ma question est donc : est-ce possible? parce que je vois que dans les types d'authentification on peut mettre soit Basic, Certificate, mais pas les 2...
    Je ne pense pas que les binding de base le permettent. J'ai essayé de jouer avec un CustomBinding mais je n'ai pas réussi.

    J'ai vu que WCF 4.5 permet d'utiliser des modes d'authentification multiples sur le même endpoint mais ma solution est en 4.0...

    Merci de votre aide.

  2. #2
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    Comment tu gère l'authentification? tu peux mettre ton code?
    tu hérite de DelegatingHandler pour vérifier le mode d'authentification?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par défaut
    Voici le code qui permet de hoster mon service:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Uri baseAdress = new Uri("https://localhost:8446/"); 
    WebServiceHost host = new WebServiceHost(typeof(RestService));
    WebHttpBinding webBinding = new WebHttpBinding();
    webBinding.Security.Mode = WebHttpSecurityMode.Transport;
    webBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
    host.AddServiceEndpoint(typeof(IRestService), webBinding, baseAdress);
    host.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = new CustomUserNameValidator();
    host.Credentials.UserNameAuthentication.UserNamePasswordValidationMode = UserNamePasswordValidationMode.Custom;
    host.Description.Endpoints[0].Behaviors.Add(new WebHttpBehavior { HelpEnabled = true });
    host.Open();
    CustomUserNameValidator est une classe qui hérite de System.IdentityModel.Selectors.UserNamePasswordValidator pour gérer moi-même la validation du login et mot de passe saisis par l'utilisateur.

  4. #4
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    Ce que tu utilises cest WCF REST Services, en WebApi, tu peux avoir un DelegateHandler qui contrôle l'authentification à chaque appel, tu vérifies à chaque fois si l'appel est en Basic, peut être ça réglera ton souci, tu vas pouvoir à chaque appel Vérifier le Header de la requête HTTP et voir si le client essaie de s'authentifier en Basic, et en fonction de ton paramètre de config tu pourras lever une exception pour le client.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par défaut
    Sauf que moi je dois faire du REST

    Merci tout de même

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/03/2015, 01h40
  2. Réponses: 3
    Dernier message: 10/04/2011, 17h18
  3. Authentification multiple sous WebLogic (Portal) 10
    Par cclermont dans le forum Weblogic
    Réponses: 0
    Dernier message: 08/12/2008, 16h47
  4. [3.5] Webservice WCF/REST
    Par CUCARACHA dans le forum Windows Communication Foundation
    Réponses: 2
    Dernier message: 21/03/2008, 07h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo