Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: noviembre 2007
En este tema se muestra cómo validar credenciales personalizadas para autenticar a usuarios al llamar al servicio de autenticación de ASP.NET mediante Windows Communication Foundation (WCF). Normalmente, la autenticación sólo requiere un nombre de usuario y una contraseña. Sin embargo, en algunos casos, quizá tenga que comprobar la identidad de un usuario mediante credenciales adicionales, como un número de identificación.
Utilice la implementación de WCF del servicio de autenticación si desea que un usuario inicie sesión desde una aplicación cliente que puede enviar y utilizar un mensaje SOAP 1.1, como una aplicación Java.
Para validar credenciales personalizadas para la autenticación
En el archivo Global.asax de la aplicación web, cree un controlador de eventos para el evento Authenticating.
En el controlador, lea el contenido de la propiedad CustomCredential del parámetro AuthenticatingEventArgs del controlador y, a continuación, autentique los valores.
En el ejemplo siguiente se muestra cómo leer dos valores de autenticación de la propiedad CustomCredential y cómo pasarlos posteriormente a una clase de autenticación personalizada denominada 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 Subvoid 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; }En el método Application_Start del archivo Global.asax, enlace el controlador de eventos del evento Authenticating.
En el siguiente ejemplo se muestra cómo enlazar un controlador al evento Authenticating.
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) AddHandler System.Web.ApplicationServices.AuthenticationService.Authenticating, _ AddressOf Me.AuthenticationService_Authenticating End Subvoid Application_Start(object sender, EventArgs e) { System.Web.ApplicationServices.AuthenticationService.Authenticating += new EventHandler<System.Web.ApplicationServices.AuthenticatingEventArgs>(AuthenticationService_Authenticating); }Llame al servicio de autenticación desde una aplicación que pueda utilizar un mensaje de SOAP desde un servicio web, y pase los valores adicionales que se van a autenticar en la propiedad CustomCredential.
Compilar el código
- Debe configurar el servicio de autenticación en un servidor web para que funcionen los ejemplos anteriores. Para obtener más información, vea Cómo: Habilitar el servicio de autenticación de WCF.
Programación eficaz
Los ejemplos de código anteriores muestran una clase de autenticación personalizada que inicia ArgumentNullException si cualquiera de los parámetros es null. El código debe administrar cualquier excepción que se produzca durante la validación.
Seguridad
Tenga acceso al servicio de autenticación utilizando siempre la Capa de sockets seguros (SSL), mediante el protocolo HTTPS.
Vea también
Conceptos
Información general sobre el servicio de autenticación de Windows Communication Foundation