Red de conocimiento informático - Problemas con los teléfonos móviles - Inicio de sesión de usuario de Smarty Writing ¿Cómo utiliza las cookies?

Inicio de sesión de usuario de Smarty Writing ¿Cómo utiliza las cookies?

Ver artículo Cómo escribir su propio servicio de inicio de sesión único (SSO) 2 2009/07/17 10:49 AM Cómo escribir su propio servicio de inicio de sesión único (SSO) 23.2 Descripción del código WEB-SSO 3.2.1 Descripción del código del servicio de autenticación Web-SSO El código fuente se puede encontrar en la dirección del sitio web.

*; importar java.text.*; importar java.servlet.http.*; importar java.util.concurrent.*; importar javax.servlet.http.*; cuentas; SSOID de ConcurrentMap privados estáticos; String cookiename="WangYuDesktopSSOID"; String domainname; public void init(ServletConfig config) lanza ServletException { super.init(config.config); ("nombre")cuentas.put("villancico", "villancico"); cuentas.put("villancico", "villancico"); cuentas.put("villancico", "villancico"); " ", "villancico"); cuentas.put("villancico", "villancico"); cuentas.put("villancico", "villancico"); etc.put("villancico", "villancico"); ProcessRequest (solicitud HttpServletRequest, respuesta HttpServletResponse) arroja ServletException, IOException { PrintWriter out = respuesta.getWriter(); String action = request.getPage(); , " "carol"); }String action = request.getParameter("action"); String result="failed"; if (action==null) { handlerFromLogin(solicitud,respuesta); } else if ( action.equals( "authcookie")){ String myCookie = request.getParameter("cookiename"); if (myCookie! = null) resultado = authCookie(myCookie); out.print(resultado). . igual("authuser")) { resultado=authNameAndPasswd( solicitud,respuesta); out.print(resultado); out.close(); else if (action.equals("logout")) { String myCookie = solicitud. getParameter ("nombre de la cookie");

yCookie); out.close(); } } else if (action.equals("cerrar sesión")) { String myCookie = request.getParameter("cookiename"); cerrar sesión(myCookie); .....} No es difícil ver en el código que SSOAuth es un Servlet simple. Tiene dos variables miembro estáticas: cuentas y SSOID. Ambas variables utilizan la clase MAP segura para subprocesos ConcurrentMap en JDK1.5. El ejemplo debe ejecutarse en JDK1.5. Las cuentas se utilizan para almacenar el nombre de usuario y la contraseña del usuario. En el método init (), puede ver que he agregado tres usuarios legales al sistema. En realidad, las cuentas deben recuperarse en la base de datos o LDAP; para simplificar, en este ejemplo creé tres usuarios en la memoria con el programa usando ConcurrentMap. SSOID guarda la cookie y el nombre de usuario generados después de que el usuario inicia sesión correctamente. Su función es obvia: cuando un usuario accede a otro sistema después de iniciar sesión correctamente, para identificar la validez de la cookie adjunta a la solicitud del usuario, debe verificar si esta asignación existe en el SSOID.

En el método principal de manejo de solicitudes, ProcessRequest(), puede ver claramente todas las características de SSOAuth. Si el usuario aún no ha iniciado sesión y está iniciando sesión en el sistema por primera vez, será redirigido a la página login.jsp (más adelante se explicará cómo saltar). Después de que el usuario proporciona su nombre de usuario y contraseña, se autentica utilizando el método handlerFromLogin(). Si el usuario ya ha iniciado sesión en el sistema, no es necesario que vuelva a iniciar sesión para acceder a otras aplicaciones. Esto se debe a que el navegador envía la cookie generada al iniciar sesión por primera vez con la solicitud. Las cookies de autenticación son una de las funciones principales de SSOAuth. SSOAuth también puede autenticar directamente solicitudes de autenticación de nombre de usuario y contraseña desde páginas que no son login.jsp. Esta función es para SSO fuera de red y estará disponible para SSO de escritorio más adelante. SSOAuth también proporciona servicios de cierre de sesión.

Echemos un vistazo a varias funciones principales: private void handlerFromLogin(solicitud HttpServletRequest, respuesta HttpServletResponse) lanza ServletException, IOException { String nombre de usuario = request.getParameter("nombre de usuario String contraseña = request.getParameter () "contraseña"); String pass = (String) cuentas.get(nombre de usuario); if ((pass==null)||(!pass.equals(contraseña))) getServletContext().getRequestDispatcher("/failed.html " ).forward( solicitud, respuesta); else { String gotoURL = request.getParameter("goto"); String newID = createUID(); newID, nombre de usuario Cookie wangyu = respuesta.addCookie(wangyu); .out.println("iniciar sesión correctamente, volver a la URL:" + gotoURL); if (gotoURL! = null) { PrintWriter out = respuesta.getWriter() respuesta.sendRedirect(gotoURL()); .}}}handlerFromLogin() Este método se utiliza para manejar solicitudes de inicio de sesión desde solicitudes login.jsp. La lógica es muy simple: compare el nombre de usuario y la contraseña ingresados ​​por el usuario con el conjunto de usuarios predefinido (almacenado en las cuentas). Si el nombre de usuario o la contraseña no coinciden, devuelva la página de error de inicio de sesión (fallido.html); exitoso, se crea una nueva ID para la sesión actual del usuario y la asignación entre esta ID y el nombre de usuario se almacena en SSO. Si el inicio de sesión es exitoso, debe crear una nueva ID para la sesión actual del usuario, almacenar la asignación entre esta ID y el nombre de usuario en SSOID y, finalmente, configurar esta ID en un valor de cookie que el navegador pueda guardar. Después de iniciar sesión correctamente, ¿a qué página accederá el navegador? Luego repasamos cómo utilizar el servicio de identidad. Generalmente, no accedemos directamente a ninguna URL del Servicio de identidad, incluido login.jsp. Los servicios de identidad se utilizan para proteger otros servicios de aplicaciones. Un usuario normalmente visitará una URL para una aplicación web protegida por SSOAuth, y la aplicación actual descubrirá que el usuario actual no ha iniciado sesión y luego forzará a la página a redirigir al login.jsp de SSOAuth para permitir que el usuario inicie sesión. Si el inicio de sesión es exitoso, el navegador del usuario apuntará automáticamente a la URL a la que el usuario accedió inicialmente. En el método handlerFromLogin(), recibimos el parámetro "goto" para guardar la URL a la que el usuario accedió inicialmente y redirigir al usuario a. esta página. Otra cosa a tener en cuenta es que al configurar la cookie, estoy usando un método llamado setMaxAge(6000). Este método se utiliza para establecer la fecha de vencimiento de la cookie en segundos. Si no se utiliza este método o el parámetro es negativo, la cookie caducará cuando se cierre el navegador.

Aquí, le di un valor mayor (1000 minutos). El resultado de esto es que cuando cierre el navegador (o lo apague) y abra el navegador la próxima vez para acceder a la aplicación que acaba de usar, siempre que no lo haga. Necesitas iniciar sesión nuevamente durante 1000 minutos. Esta es una característica necesaria en el SSO de escritorio que describo a continuación. Otros métodos son mucho más simples, por lo que no los explicaré aquí.

Categoría: Servicios web | Agregar a favoritos | Compartir en iPost Vistas (142) | Comentarios (0) Artículo anterior: Escribiendo su propio servicio de inicio de sesión único (SSO) Escribiendo su propio servicio de inicio de sesión único (SSO)...