Comment : personnaliser la connexion utilisateur à l'aide du service d'authentification WCF
Mise à jour : novembre 2007
Cette rubrique indique comment valider des informations d'authentification personnalisées pour authentifier des utilisateurs lorsque vous appelez le service d'authentification ASP.NET à l'aide de Windows Communication Foundation (WCF). En général, l'authentification requiert uniquement un nom d'utilisateur et un mot de passe. Toutefois, dans certains cas, vous devrez peut-être vérifier l'identité d'un utilisateur en utilisant des informations d'authentification supplémentaires telles qu'un numéro d'identification.
Vous utilisez l'implémentation de WCF du service d'authentification lorsque vous souhaitez connecter un utilisateur depuis une application cliente pouvant transmettre et consommer un message SOAP 1.1 (application Java, par exemple).
Pour valider des informations d'authentification personnalisées à des fins d'authentification
Dans le fichier Global.asax de l'application Web, créez un gestionnaire d'événements pour l'événement Authenticating.
Dans le gestionnaire, lisez le contenu de la propriété CustomCredential du paramètre AuthenticatingEventArgs du gestionnaire, puis authentifiez les valeurs.
L'exemple suivant indique comment lire deux valeurs d'authentification de la propriété CustomCredential puis les passer à une classe d'authentification personnalisée nommée StudentAuthentication.
Sub AuthenticationService_Authenticating _ (ByVal sender As Object, _ ByVal e As System.Web.ApplicationServices.AuthenticatingEventArgs) Dim studentid As String = String.Empty Dim answer As String = String.Empty Dim credentials As String() = _ e.CustomCredential.Split(New Char() {","c}) If (credentials.Length > 0) Then studentid = credentials(0) If (credentials.Length > 1) Then answer = credentials(1) End If End If Try e.Authenticated = _ StudentAuthentication.ValidateStudentCredentials _ (e.Username, e.Password, studentid, answer) Catch ex As ArgumentNullException e.Authenticated = False End Try e.AuthenticationIsComplete = True End Sub
void AuthenticationService_Authenticating(object sender, System.Web.ApplicationServices.AuthenticatingEventArgs e) { string studentid = String.Empty; string answer = String.Empty; string[] credentials = e.CustomCredential.Split(new char[] { ',' }); if (credentials.Length > 0) { studentid = credentials[0]; if (credentials.Length > 1) { answer = credentials[1]; } } try { e.Authenticated = StudentAuthentication.ValidateStudentCredentials (e.UserName, e.Password, studentid, answer); } catch (ArgumentNullException ex) { e.Authenticated = false; } e.AuthenticationIsComplete = true; }
Dans la méthode Application_Start du fichier Global.asax, liez le gestionnaire d'événements pour l'événement Authenticating.
L'exemple suivant montre comment lier un gestionnaire à l'événement Authenticating.
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) AddHandler System.Web.ApplicationServices.AuthenticationService.Authenticating, _ AddressOf Me.AuthenticationService_Authenticating End Sub
void Application_Start(object sender, EventArgs e) { System.Web.ApplicationServices.AuthenticationService.Authenticating += new EventHandler<System.Web.ApplicationServices.AuthenticatingEventArgs>(AuthenticationService_Authenticating); }
Appelez le service d'authentification d'une application qui peut lire et consommer un message SOAP à partir d'un service Web, puis passez les valeurs supplémentaires à authentifier dans la propriété CustomCredential.
Compilation du code
- Vous devez installer le service d'authentification sur un serveur Web pour permettre aux exemples précédents de fonctionner. Pour plus d'informations, consultez Comment : activer le service d'authentification de WCF.
Programmation fiable
Les exemples de code précédents affichent une classe d'authentification personnalisée qui lève l'ArgumentNullException si l'un des paramètres est null. Votre code doit gérer toutes les exceptions levées pendant la validation.
Sécurité
Vous devez systématiquement accéder au service d'authentification en utilisant la couche de sockets sécurisée (SSL, Secure Sockets Layer), avec le protocole HTTPS.
Voir aussi
Concepts
Vue d'ensemble du service d'authentification de Windows Communication Foundation