{
if(contextID == null)
throw new IllegalArgumentException("ContextID is null");
boolean isAuthorized = false;
AuthorizationManager am = securityContext.getAuthorizationManager();
if(am == null)
throw new IllegalStateException("AuthorizationManager 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);
map.put(ResourceKeys.ROLENAME, roleName);
map.put(ResourceKeys.ROLEREF_PERM_CHECK, Boolean.TRUE);
EJBResource ejbResource = new EJBResource(map);
ejbResource.setPolicyContextID(contextID);
RunAs callerRunAs = SecurityActions.getIncomingRunAs(securityContext);
ejbResource.setEjbVersion(version);
ejbResource.setEjbName(ejbName);
ejbResource.setPrincipal(ejbPrincipal);
ejbResource.setCallerRunAsIdentity(callerRunAs);
ejbResource.setSecurityRoleReferences(securityRoleRefs);
ejbResource.setEnforceEJBRestrictions(enforceEJBRestrictions);
ejbResource.setCallerSubject(callerSubject);
SecurityContextCallbackHandler sch = new SecurityContextCallbackHandler(this.securityContext);
RoleGroup callerRoles = am.getSubjectRoles(callerSubject, sch);
try
{
int check = am.authorize(ejbResource, callerSubject, callerRoles);
isAuthorized = (check == AuthorizationContext.PERMIT);
}
catch (Exception e)
{
isAuthorized = false;