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

Windows Communication Foundation .NET Discussion :

WCF: Authentification HTTP Basic ?


Sujet :

Windows Communication Foundation .NET

  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 27
    Par défaut WCF: Authentification HTTP Basic ?
    Bonjour,

    J'aimerais savoir comment activer seulement l'authentification BASIC dans le fichier de config, de mon service WCF ?

    Sur IIS7 c'est ok, mais apres avoir enlever l'authentification windows j'ai cela :

    Les paramètres de sécurité pour ce service requièrent l’authentification « Anonymous », mais elle n’est pas activée pour l’application IIS qui héberge ce service

    --------------------

    Je n'arrive pas avec service configurator editor, a gérer cette authentification, c'est dans le binding configuration, puis l'onglet Sécurity, mais si je change il me parle de HTTPS, alors que j'y ni suis pas (c'est vrai c'est pas très sécure Basic+HTTP, mai c'est pour des tests) .

    Merci.

  2. #2
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 27
    Par défaut
    Il semble que ce ne soit pas possible de faire un service WCF avec une authentification BASIC sur HTTP, il faut absolument HTTPS, meme en mettant en place son propre provider d'authentification (MembershipProvider).

    J'ai donc mis en place SSL sur IIS7, grace au certificats auto signé pour les tests :
    http://quoideneufaujourdhui.spaces.l...B059!651.entry

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut
    Salut,

    Tu peux très bien mettre en place un service WCF avec une authentification HTTP Basic sans HTTPS

    Ce qui pose problème dans un hébergement IIS6 par contre, c'est la validation des credentials (login/password).
    Sur IIS6 les credentials HTTP Basic sont validés avant l'arrivée au webservice, par la couche de sécurité windows (il faut donc des comptes windows, ce qui te fait perdre en intéropérabilité).
    Dans ce cas il vaut mieux héberger ton service en self-hosted (service windows par ex).

    Voici un exemple de config pour du HTTP Basic sans HTTPS avec un custom validator pour valider tes utilisateurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <system.serviceModel>
        <behaviors>
          <serviceBehaviors>
            <behavior name="userName">
              <serviceCredentials>
                <userNameAuthentication customUserNamePasswordValidatorType="CustomValidator, MonAssembly" userNamePasswordValidationMode="Custom"/>
              </serviceCredentials>
            </behavior>
          </serviceBehaviors>
          <endpointBehaviors>
            <behavior name="webHttpBehavior">
              <webHttp/>
            </behavior>
          </endpointBehaviors>
        </behaviors>
        <bindings>
          <webHttpBinding>
            <binding name="secureBasic">
              <security mode="TransportCredentialOnly">
                <transport clientCredentialType="Basic" proxyCredentialType="Basic"
                  realm="mon super site" />
              </security>
            </binding>
          </webHttpBinding>
        </bindings>
        <services>
          <service name="MonSuperService" behaviorConfiguration="userName">
            <clear />
            <endpoint
              behaviorConfiguration="webHttpBehavior"
              binding="webHttpBinding"
              bindingConfiguration="secureBasic"
              contract="IMonSuperService"
              />
          </service>
        </services>
      </system.serviceModel>
    Code pour le custom validator :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    using System;
    using System.IdentityModel.Selectors;
    using System.IdentityModel.Tokens;
    namespace MonSuperService
    {
        /// <summary>
        /// CustomValidator
        /// </summary>
        public class CustomValidator : UserNamePasswordValidator
        {
            /// <summary>
            /// Validate the username and password token
            /// </summary>
            /// <param name="userName"></param>
            /// <param name="password"></param>
            public override void Validate(string userName, string password)
            {
                try
                {
                		// Simplistic validation example
                    if (user != "Big" || password != "Boss")
                        throw new SecurityTokenException("T'es pas le big boss, dégage de là !");
                }
                catch (SecurityTokenException)
                {
                    // Custom log
                    Logger.LogLine(String.Format("Authentication failure : User={0}, Password={1}", userName, password), LogFlag.Warning);
                    throw;
                }
            }
        }
    }
    J'espère que ça pourra t'aider.

    puls.

  4. #4
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 27
    Par défaut
    Je te remercie, pour ta réponse, j'ai mis en place du HTTPS, mais je regarderais ta solution.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. session-Timeout http basic authentification
    Par yahya.romdhane.ensi dans le forum Général Java
    Réponses: 0
    Dernier message: 20/05/2013, 11h16
  2. Réponses: 9
    Dernier message: 02/03/2012, 12h06
  3. Erreur d'appel à un Web Service avec une authentification HTTP basic
    Par Lordsephiroth dans le forum Services Web
    Réponses: 3
    Dernier message: 28/09/2011, 16h53
  4. tRest avec authentification http basic
    Par Benoit_Durand dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 22/06/2011, 09h36
  5. Réponses: 0
    Dernier message: 04/02/2011, 12h18

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