if(contextID == null)
throw new IllegalArgumentException("ContextID is null");
if(callerSubject == null && callerRunAs == null)
throw new IllegalArgumentException("Either callerSubject or callerRunAs should be non-null");
AuthorizationManager am = securityContext.getAuthorizationManager();
if(am == null)
throw new IllegalStateException("Authorization Manager is null");
HashMap<String,Object> map = new HashMap<String,Object>();
try
{
if(this.policyRegistration == null)
this.policyRegistration = getPolicyRegistrationFromJNDI();
}
catch(Exception e)
{
log.error("Error getting Policy Registration",e);
}
map.put(ResourceKeys.POLICY_REGISTRATION, this.policyRegistration);
EJBResource ejbResource = new EJBResource(map);
ejbResource.setEjbVersion(version);
ejbResource.setPolicyContextID(contextID);
ejbResource.setCallerRunAsIdentity(callerRunAs);
ejbResource.setEjbName(ejbName);
ejbResource.setEjbMethod(ejbMethod);
ejbResource.setPrincipal(ejbPrincipal);
ejbResource.setEjbMethodInterface(invocationInterfaceString);
ejbResource.setCodeSource(ejbCS);
ejbResource.setCallerRunAsIdentity(callerRunAs);
ejbResource.setCallerSubject(callerSubject);
ejbResource.setEjbMethodRoles(methodRoles);
SecurityContextCallbackHandler sch = new SecurityContextCallbackHandler(this.securityContext);
RoleGroup callerRoles = am.getSubjectRoles(callerSubject, sch);
boolean isAuthorized = false;
try
{
int check = am.authorize(ejbResource, callerSubject, callerRoles);
isAuthorized = (check == AuthorizationContext.PERMIT);
authorizationAudit((isAuthorized ? AuditLevel.SUCCESS : AuditLevel.FAILURE)
,ejbResource, null);
}
catch (Exception e)