Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
EN EL PROYECTO
Dependencias
pom.xml
<dependency>
<groupId>com.onelogin</groupId>
<artifactId>java-saml</artifactId>
<version>2.2.0</version>
</dependency>
Archivo de configuración
Adjuntado en la carpeta
web.xml
<error-page>
<error-code>500</error-code>
<location>/login.xhtml</location>
</error-page>
Clases
Auth.java
ServletUtils.java
Paginas web
logout.xhtml
errorpage.xhtml
metadata.jsp
Clases a modificar
AuthorizationListener.java
LoginBacking.java
AuthorizationListener
agregar el metodo
public void getLoginPage() {
try {
HttpServletRequest request = (HttpServletRequest)
FacesContext.getCurrentInstance().getExternalContext().getRequest();
HttpServletResponse response = (HttpServletResponse)
FacesContext.getCurrentInstance().getExternalContext().getResponse();
FacesContext.getCurrentInstance().getApplication().getNavigationHandler().handleNavigation(FacesCont
ext.getCurrentInstance(), null, redirect);
}
} catch (Error | SettingsException | IOException ex) {
Logger.getLogger(LoginBacking.class.getName()).log(Level.SEVERE, null, ex);
}
}
getLoginPage();
Agregar imports
import ar.edu.unnoba.declaracionjurada.jsf.backing.Auth;
import ar.edu.unnoba.programas.jsf.backing.LoginBacking;
import com.onelogin.saml2.exception.SettingsException;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
LoginBacking.java
El metodo performLogin() tiene que realizar el login según el sistema y poner el usuario en sesión o
no, pero ya no devuelve nada.
public boolean performLogin() {
EntityWebResource ewr = new EntityWebResource();
String url_path = null;
String mensaje = "";
HttpServletRequest request = (HttpServletRequest)
FacesContext.getCurrentInstance().getExternalContext().getRequest();
try {
mensaje = authenticate(this.getUsuario().getUserName(),
this.getUsuario().getPassword());
if (!mensaje.equals("servicio_error") && !mensaje.equals("credentials_error")) {
Usuario user = this.load(this.getUsuario().getUserName(),
this.getUsuario().getPassword(), mensaje);
if (user == null) {
this.setCurrentUser(null);
return false;
} else {
this.setUsuario(user);
this.setCurrentUser(this.getUsuario());
url_path = getFullURL(request);
ewr.guardarRegistro(url_path, user.getUserName());
return true;
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
return false;
}
}
FacesContext.getCurrentInstance().getApplication().getNavigationHandler().handleNavigation(FacesCont
ext.getCurrentInstance(), null, redirect);
}
} catch (IOException ex) {
Logger.getLogger(LoginBacking.class.getName()).log(Level.SEVERE, null, ex);
} catch (SettingsException ex) {
Logger.getLogger(LoginBacking.class.getName()).log(Level.SEVERE, null, ex);
} catch (Error ex) {
Logger.getLogger(LoginBacking.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
*
* @return
*/
public String isUserLoggedIn() {
String result = "no";
if (getSessionMap().containsKey("currentUser")) {
result = "si";
} else {
try {
HttpServletRequest request = (HttpServletRequest)
FacesContext.getCurrentInstance().getExternalContext().getRequest();
HttpServletResponse response = (HttpServletResponse)
FacesContext.getCurrentInstance().getExternalContext().getResponse();
if (!auth.isAuthenticated()) {
result = "no";
} else {
Map<String, List<String>> attributes = auth.getAttributes();
String nameId = auth.getNameId();
if (tieneServicio((List<String>) auth.getAttribute("memberOf"))) {
this.getUsuario().setUserName(auth.getAttribute("mail").iterator().next());
this.getUsuario().setPassword(auth.getAttribute("user_password").iterator().next());
if (performLogin()) {
result = "si";
} else {
result = "error";
}
} else {
result = "error";
}
}
} catch (Exception ex) {
Logger.getLogger(LoginBacking.class.getName()).log(Level.SEVERE, null, ex);
result = "no";
}
}
return result;
}
AbstractBacking.java
isUserLoggedIn()
logMessage(String... messages)
template.xhtml
</h:form>
Instalar open jdk y no open jre, no importa si estan las dos pero si o si tiene que estar la jdk
EN EL SERVIDOR OPENID
#cd /var/simplesamlphp/metadata
#nano saml20-sp-remote.php
En el archivo agregar
$metadata['http://192.168.16.31:8080/declaracion_jurada/metadata.jsp'] = array (
'AssertionConsumerService' => 'http://192.168.16.31:8080/declaracion_jurada/login.xhtml',
'SingleLogoutService' => 'http://192.168.16.31:8080/declaracion_jurada/logout.xhtml',
);
$metadata['https://ddjjviaticos.unnoba.edu.ar/metadata.jsp'] = array (
'AssertionConsumerService' => 'https://ddjjviaticos.unnoba.edu.ar/login.xhtml',
'SingleLogoutService' => 'https://ddjjviaticos.unnoba.edu.ar/logout.xhtml',
);