use of javax.security.auth.message.module.ClientAuthModule in project Payara by payara.
the class GFServerConfigProvider method createModuleInfo.
/**
* Instantiate+initialize module class
*/
static ModuleInfo createModuleInfo(Entry entry, CallbackHandler handler, String type, Map<String, Object> properties) throws AuthException {
try {
// instantiate module using no-arg constructor
Object newModule = entry.newInstance();
Map<String, Object> map = properties;
Map<String, Object> entryOptions = entry.getOptions();
if (entryOptions != null) {
if (map == null) {
map = new HashMap<>();
} else {
map = new HashMap<>(map);
}
map.putAll(entryOptions);
}
// No doPrivilege at this point, need to revisit
if (SERVER.equals(type)) {
if (newModule instanceof ServerAuthModule) {
ServerAuthModule sam = (ServerAuthModule) newModule;
sam.initialize(entry.getRequestPolicy(), entry.getResponsePolicy(), handler, map);
} else if (newModule instanceof com.sun.enterprise.security.jauth.ServerAuthModule) {
// TODO REMOVE
com.sun.enterprise.security.jauth.ServerAuthModule sam0 = (com.sun.enterprise.security.jauth.ServerAuthModule) newModule;
AuthPolicy requestPolicy = (entry.getRequestPolicy() != null) ? new AuthPolicy(entry.getRequestPolicy()) : null;
AuthPolicy responsePolicy = (entry.getResponsePolicy() != null) ? new AuthPolicy(entry.getResponsePolicy()) : null;
sam0.initialize(requestPolicy, responsePolicy, handler, map);
}
} else {
// CLIENT
if (newModule instanceof ClientAuthModule) {
ClientAuthModule cam = (ClientAuthModule) newModule;
cam.initialize(entry.getRequestPolicy(), entry.getResponsePolicy(), handler, map);
} else if (newModule instanceof com.sun.enterprise.security.jauth.ClientAuthModule) {
// TODO REMOVE
com.sun.enterprise.security.jauth.ClientAuthModule cam0 = (com.sun.enterprise.security.jauth.ClientAuthModule) newModule;
AuthPolicy requestPolicy = new AuthPolicy(entry.getRequestPolicy());
AuthPolicy responsePolicy = new AuthPolicy(entry.getResponsePolicy());
cam0.initialize(requestPolicy, responsePolicy, handler, map);
}
}
return new ModuleInfo(newModule, map);
} catch (Exception e) {
if (e instanceof AuthException) {
throw (AuthException) e;
}
AuthException ae = new AuthException();
ae.initCause(e);
throw ae;
}
}
use of javax.security.auth.message.module.ClientAuthModule in project Payara by payara.
the class ClientAuthConfigImpl method createAuthContext.
@Override
@SuppressWarnings("unchecked")
protected <M> M createAuthContext(String authContextID, Map<String, ?> properties) throws AuthException {
if (!authContextHelper.isProtected(new ClientAuthModule[0], authContextID)) {
return null;
}
ClientAuthContext context = new ClientAuthContext() {
ClientAuthModule[] module = init();
ClientAuthModule[] init() throws AuthException {
ClientAuthModule[] clientModules;
try {
clientModules = authContextHelper.getModules(new ClientAuthModule[0], authContextID);
} catch (AuthException ae) {
logIfLevel(SEVERE, ae, "ClientAuthContext: ", authContextID, "of AppContext: ", getAppContext(), "unable to load client auth modules");
throw ae;
}
MessagePolicy requestPolicy = policyDelegate.getRequestPolicy(authContextID, properties);
MessagePolicy responsePolicy = policyDelegate.getResponsePolicy(authContextID, properties);
boolean noModules = true;
for (int i = 0; i < clientModules.length; i++) {
if (clientModules[i] != null) {
if (isLoggable(FINE)) {
logIfLevel(FINE, null, "ClientAuthContext: ", authContextID, "of AppContext: ", getAppContext(), "initializing module");
}
noModules = false;
checkMessageTypes(clientModules[i].getSupportedMessageTypes());
clientModules[i].initialize(requestPolicy, responsePolicy, callbackHandler, authContextHelper.getInitProperties(i, properties));
}
}
if (noModules) {
logIfLevel(WARNING, null, "CLientAuthContext: ", authContextID, "of AppContext: ", getAppContext(), "contains no Auth Modules");
}
return clientModules;
}
@Override
public AuthStatus validateResponse(MessageInfo arg0, Subject arg1, Subject arg2) throws AuthException {
AuthStatus[] status = new AuthStatus[module.length];
for (int i = 0; i < module.length; i++) {
if (module[i] == null) {
continue;
}
if (isLoggable(FINE)) {
logIfLevel(FINE, null, "ClientAuthContext: ", authContextID, "of AppContext: ", getAppContext(), "calling vaidateResponse on module");
}
status[i] = module[i].validateResponse(arg0, arg1, arg2);
if (authContextHelper.exitContext(validateResponseSuccessValues, i, status[i])) {
return authContextHelper.getReturnStatus(validateResponseSuccessValues, SEND_FAILURE, status, i);
}
}
return authContextHelper.getReturnStatus(validateResponseSuccessValues, SEND_FAILURE, status, status.length - 1);
}
@Override
public AuthStatus secureRequest(MessageInfo arg0, Subject arg1) throws AuthException {
AuthStatus[] status = new AuthStatus[module.length];
for (int i = 0; i < module.length; i++) {
if (module[i] == null) {
continue;
}
if (isLoggable(FINE)) {
logIfLevel(FINE, null, "ClientAuthContext: ", authContextID, "of AppContext: ", getAppContext(), "calling secureResponse on module");
}
status[i] = module[i].secureRequest(arg0, arg1);
if (authContextHelper.exitContext(secureResponseSuccessValues, i, status[i])) {
return authContextHelper.getReturnStatus(secureResponseSuccessValues, AuthStatus.SEND_FAILURE, status, i);
}
}
return authContextHelper.getReturnStatus(secureResponseSuccessValues, AuthStatus.SEND_FAILURE, status, status.length - 1);
}
@Override
public void cleanSubject(MessageInfo arg0, Subject arg1) throws AuthException {
for (int i = 0; i < module.length; i++) {
if (module[i] == null) {
continue;
}
if (isLoggable(FINE)) {
logIfLevel(FINE, null, "ClientAuthContext: ", authContextID, "of AppContext: ", getAppContext(), "calling cleanSubject on module");
}
module[i].cleanSubject(arg0, arg1);
}
}
};
return (M) context;
}
Aggregations