Login module UnauthorizedException
rodrigo.burdet Aug 19, 2016 1:58 PMHi.
Im trying to implement my own security manager for BPM 6.4 running in EAP 6.4 also. in which every user with roles defined in a variable in configuration/standalone.xml i.e serverRole should access
For that purpose im trying with the following code, and trying to access some of the resources:
http://localhost:8080/business-central/
or
localhost:8080/business-central/rest/organizationalunits/.
What i get is the following error:
ERROR [org.jboss.resteasy.resteasy_jaxrs.i18n] (http-localhost.localdomain/127.0.0.1:8080-3) RESTEASY000100: Failed executing GET organizationalunits/: org.jboss.resteasy.spi.UnauthorizedException
Thanks in advance
package com.mycompany.module.loginmodule;
import java.io.IOException;
import java.security.Principal;
import java.security.acl.Group;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import javax.security.auth.Subject;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.NameCallback;
import javax.security.auth.callback.PasswordCallback;
import javax.security.auth.callback.UnsupportedCallbackException;
import javax.security.auth.login.FailedLoginException;
import javax.security.auth.login.LoginException;
import org.jboss.security.SimpleGroup;
import org.jboss.security.SimplePrincipal;
import org.jboss.security.Util;
import org.jboss.security.auth.spi.AbstractServerLoginModule;
import org.jboss.crypto.digest.DigestCallback;
public class SimpleCustomLoginModule extends AbstractServerLoginModule
{
private Principal identity;
private char[] credential;
private static final String SERVER_ROLE = "serverRole";
private List<String> serverRoles;
private static final String[] ALL_VALID_OPTIONS = { SERVER_ROLE };
public void initialize(Subject subject, CallbackHandler callbackHandler,
Map sharedState, Map options){
System.out.println("Initialize");
addValidOptions(ALL_VALID_OPTIONS);
String strRoles = (String) options.get(SERVER_ROLE);
serverRoles = Arrays.asList(strRoles.split("\\s"));
super.initialize(subject, callbackHandler, sharedState, options);
}
// No password validations are made
public boolean login() throws LoginException{
System.out.println("GET LOGIN");
String username = getUsername();
try{
identity = createIdentity(username);
System.out.println("IDENTITY NAME :" + identity.getName());
}
catch(Exception e){
throw new LoginException("Failed to create principal: "+ e.getMessage());
}
if( getUseFirstPass() == true ){
sharedState.put("javax.security.auth.login.name", username);
sharedState.put("javax.security.auth.login.password", credential);
}
super.loginOk = true;
return true;
}
protected Principal getIdentity(){
return identity;
}
protected String getUsername() {
String username = null;
NameCallback nc = new NameCallback("User name: ", "guest");
Callback[] cb = {nc};
try {
callbackHandler.handle(cb);
username = nc.getName();
} catch (IOException e) {
e.printStackTrace();
} catch (UnsupportedCallbackException e) {
e.printStackTrace();
}
return username;
}
protected Group[] getRoleSets() throws LoginException {
System.out.println("GET ROLE SETS");
Group roleGroup = new SimpleGroup("Roles");
Group callerPrincipal = new SimpleGroup("CallerPrincipal");
Group[] groups = { roleGroup, callerPrincipal };
roleGroup.addMember(getIdentity());
callerPrincipal.addMember(getIdentity());
return groups;
}
}