Métodos de seguridad de servlet

Los métodos de seguridad de servlet authenticate, login, logout, getRemoteUser, isUserInRole y getAuthType son métodos de la interfaz javax.servlet.http.HttpServletRequest.

authenticate

Nota: Los métodos de seguridad de servlet authenticate, login y logout son nuevos para Java™ Servlet 3.0 en este release de WebSphere Application Server.

El método authenticate autentica un usuario mediante el mecanismo de inicio de sesión de contenedor de WebSphere Application Server configurado para el contexto de servlet.

La sintaxis del método authenticate es la siguiente:
boolean authenticate(HttpServletResponse response))
El ejemplo anterior utiliza el elemento siguiente:
response
HttpServletResponse asociado con HttpServletRequest.

El método authenticate devuelve true cuando la autenticación se ha establecido o ha resultado satisfactoria.

El método authenticate devuelve false si la autenticación resulta incompleta y el mecanismo de inicio de sesión subyacente ha confirmado, en la respuesta, que se han devuelto al usuario el mensaje y el código de estado HTTP.

Se genera un error java.io.IOException si se produce algún error durante la grabación de la respuesta.

Si la autenticación falla, se produce una excepción ServletException, y el llamante es el responsable de manejar el error (por ejemplo, el mecanismo de inicio de sesión subyacente no ha establecido el mensaje y el código de estado HTTP que se debe devolver al usuario).

Avoid trouble Avoid trouble: Cuando se llame al método authenticate, tenga en cuenta lo siguiente:
  • WebSphere Application Server devuelve el código HTTP 401 a un cliente.
  • El método depende del mecanismo de inicio de sesión de contenedor de WebSphere Application Server que se haya configurado para el contexto de servlet. Por ejemplo, si tiene un inicio de sesión de formulario definido para este servlet, se solicita un nombre de usuario y una contraseña. El cliente envía el ID de usuario y la contraseña a WebSphere Application Server para la autenticación.
Importante: Asegúrese de que el método authenticate devuelva true antes de utilizar el nuevo sujeto para llamar a otro servicio. Por ejemplo:
Boolean authResultTrue = req.authenticate(response);
				if (!authResultTrue) {
	return;
} else {
		// Utilice el nuevo sujeto de invocación para llamar a otros servicios.
	      }			
 
gotcha

login

El método login autentica un usuario en WebSphere Application Server con un ID de usuario y una contraseña. Si la autenticación es satisfactoria, se crea un sujeto de usuario en la hebra y cookies LTPA (Lightweight Third Party Authentication) (si el inicio de sesión único (SSO) está habilitado).

La sintaxis del método login es la siguiente:
login(java.lang.String username, java.lang.String password)
En el ejemplo anterior se utilizan los elementos siguientes:
nombre de usuario
Valor de serie que se corresponde con el identificador de inicio de sesión del usuario.
password
Contraseña del usuario.

Se produce una excepción ServletException si el mecanismo de inicio de sesión configurado no soporta la autenticación de nombre de usuario y contraseña, si ya se ha autenticado una identidad (antes de la llamada al inicio de sesión) o si la validación del nombre de usuario y la contraseña proporcionados no es correcta.

Nota: Puede establecer la propiedad personalizada de seguridad com.ibm.websphere.security.webAlwaysLogin en true, y se autenticará en la aplicación de WebSphere con el nombre de usuario y la contraseña, aunque ya se haya autenticado.

Para obtener más información acerca de cómo modificar las propiedades personalizadas de seguridad, lea el artículo que trata sobre la modificación de una propiedad personalizada existente en una configuración de seguridad global o en una configuración de dominio de seguridad.

Nota: El método login siempre utiliza el ID de usuario y la contraseña para autenticar en WebSphere Application Server e incluso la información SSO presente en HttpServletRequest.
Avoid trouble Avoid trouble: Los métodos authenticate y login establecen el sujeto de la invocación en el sujeto nuevo. Si el sujeto de llamante es nulo, se establece el sujeto de llamante en el sujeto nuevo. Si el sujeto de llamante no es nulo, no se establece el sujeto de llamante en el sujeto nuevo.

Dado que los métodos authenticate y login establecen el sujeto de la invocación en el sujeto nuevo, se ignoran el RunAs definido mediante el atributo run-As en el descriptor de despliegue, la anotación de seguridad y la anotación dinámica.

gotcha

logout

El método logout finaliza la sesión del usuario en WebSphere Application Server e invalida la sesión HTTP. Durante el proceso, WebSphere Application Server realiza los procesos siguientes:
  • Borra las cookies LTPA si SSO está habilitado
  • Invalida la sesión HTTP
  • Elimina el usuario de la memoria caché de autenticación
  • Elimina el sujeto de usuario de la hebra
  • Borra al llamante y a los sujetos de invocación
  • Establece el tipo de autenticación en null.

Después de cerrar la sesión, el acceso a un recurso web protegido requiere la reautenticación y los métodos getUserPrincipal, getRemoteUser y getAuthType devuelven null.

La sintaxis del método logout es el siguiente:
logout()

Se produce una excepción ServletException si no se puede finalizar la sesión.

Tipos de sucesos de auditoría para los métodos authenticate, login y logout

Para poder auditar los métodos authenticate, login y logout, debe crear o ampliar algunos archivos de tipo de suceso de auditoría. Estos tipos de suceso no forman parte de los archivos de tipo de suceso predeterminados.

Tabla 1. Tipos de sucesos de auditoría para los métodos authenticate, login y logout.

Los tipos de sucesos de auditoría necesarios para los métodos authenticate, login y logout son:

Método Nombre del suceso de auditoría Resultado de auditoría del suceso
authenticate/login SECURITY_AUTHN SUCCESS y/o FAILURE
logout SECURITY_AUTHN_TERMINATE SUCCESS
logout SECURITY_AUTHN_TERMINATE FAILURE

isUserInRole

(String role name): devuelve true si al usuario remoto se le ha otorgado el rol de seguridad especificado. Si al usuario remoto no se le otorga el rol especificado o si no hay ningún usuario autenticado, devuelve el valor false.

getRemoteUser

El método getRemoteUser devuelve el inicio de sesión del usuario que realiza la solicitud si el usuario se ha autenticado. Si el usuario no se ha autenticado, el método getRemoteUser devuelve null.

getAuthType

El método getAuthType devuelve el nombre del esquema de autenticación que se utiliza para proteger el servlet. Si el servlet no está protegido, el método getAuthType devuelve null.

Los esquemas de autenticación que se utilizan son:
FORM
Cuando se utiliza la autenticación basada en formulario.
BASIC
Cuando se utiliza la autenticación básica.
CLIENT_CERT
Cuando se utiliza la autenticación de certificados de cliente.
Nota:
Para el método getRemoteUser y getAuthType, los datos que se devuelven dependen de si la seguridad está habilitada en el servidor de aplicaciones donde se despliega el servlet. Existen las siguientes posibilidades:
  • Si se ha habilitado la seguridad de la aplicación, y se ha protegido un servlet, el método getRemoteUser devuelve el inicio de sesión y el método getAuthType devuelve el esquema de autenticación configurado.
  • Si la seguridad de las aplicaciones no está habilitada, ambos métodos devuelven null.

Icon that indicates the type of topic Reference topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rsec_secgetru
File name: rsec_secgetru.html