Antes de Iniciar con estos pasos es necesario saber que es el archivo AMConfig.properties y ver los requisitos del API para clientes. Para más información consultar "How the Client SDK Works"
Una vez que tenemos el SSO instalado y configurado, procedemos a bajar los APIs para el client SDK en la siguiente dirección: http://download.java.net/general/opensso/nightly.
Creamos nuestro Web Project con eclipse WTP o JDeveloper y copiamos nuestro sso client sdk al directorio WEB-INF/lib.
Creamos nuestra pantalla de log in con la tecnología que preferimos
Creamos la clase de autenticación
import java.io.IOException;
import java.util.MissingResourceException;
import java.util.Properties;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.NameCallback;
import javax.security.auth.callback.PasswordCallback;
import javax.security.auth.callback.TextOutputCallback;
import javax.security.auth.callback.UnsupportedCallbackException;
import com.iplanet.am.util.SystemProperties;
import com.sun.identity.authentication.AuthContext;
import com.sun.identity.authentication.spi.AuthLoginException;
public class Login {
private static final String moduleName = "DataStore";
private String loginIndexName;
private String orgName= "opensso";
private User user;
/**
* Constructor
* @param user
*/
public Login(User user) {
this.user = user;
loginIndexName = "http://sso.cetechihuahua.gob.mx:8080/fma";
}
protected AuthContext getAuthContext()
throws AuthLoginException {
AuthContext lc = new AuthContext(orgName);
AuthContext.IndexType indexType = AuthContext.IndexType.MODULE_INSTANCE;
lc.login(indexType, moduleName);
debugMessage(loginIndexName + ": Obtained login context");
return lc;
}
private void addLoginCallbackMessage(Callback[] callbacks)
throws UnsupportedCallbackException {
int i = 0;
try {
for (i = 0; i < succeed =" false;" callbacks =" null;" callbacks =" lc.getRequirements();" succeed =" true;">
Creamos un servlet que ejecute la autenticación
package sso;
import java.io.IOException;
import java.util.Properties;
import javax.security.auth.callback.UnsupportedCallbackException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.iplanet.am.util.SystemProperties;
import com.sun.identity.authentication.AuthContext;
import com.sun.identity.authentication.spi.AuthLoginException;
/**
* Servlet implementation class for Servlet: SSOLogin
*
*/
public class SSOLogin extends javax.servlet.http.HttpServlet implements
javax.servlet.Servlet {
static {
System.err.println("Loading properties");
Properties props = new Properties();
props.setProperty("com.iplanet.am.naming.url",
"http://sso.cetechihuahua.gob.mx:8080/afm/namingservice");
SystemProperties.initializeProperties(props);
System.err.println("Properties Inicializadas");
}
/*
* (non-Java-doc)
*
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
* HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/*
* (non-Java-doc)
*
* @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
* HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("Autenticando");
Login login = new Login(new User(request.getParameter("usuario"),
request.getParameter("password")));
AuthContext lc;
try {
lc = login.getAuthContext();
if (login.login(lc)) {
RequestDispatcher dispatcher = getServletContext()
.getRequestDispatcher("/firmado.jsp");
dispatcher.forward(request, response);
} else {
RequestDispatcher dispatcher = getServletContext()
.getRequestDispatcher("/error.jsp");
dispatcher.forward(request, response);
}
} catch (AuthLoginException e) {
e.printStackTrace();
} catch (UnsupportedCallbackException e) {
e.printStackTrace();
}
}
}
Ligas de Interes: