public void setContainer(Container container) {
super.setContainer(container);
if (container != null)
{
BeanMetaData beanMetaData = container.getBeanMetaData();
ApplicationMetaData applicationMetaData = beanMetaData.getApplicationMetaData();
AssemblyDescriptorMetaData assemblyDescriptor = applicationMetaData.getAssemblyDescriptor();
securityRoles = assemblyDescriptor.getSecurityRoles();
deploymentRoles = assemblyDescriptor.getPrincipalVersusRolesMap();
SecurityIdentityMetaData secMetaData = beanMetaData.getSecurityIdentityMetaData();
if (secMetaData != null && secMetaData.getUseCallerIdentity() == false)
{
String roleName = secMetaData.getRunAsRoleName();
String principalName = secMetaData.getRunAsPrincipalName();
//Special Case: if RunAsPrincipal is not configured, then we use unauthenticatedIdentity
if(principalName == null)
principalName = applicationMetaData.getUnauthenticatedPrincipal();
// the run-as principal might have extra roles mapped in the assembly-descriptor
Set extraRoleNames = assemblyDescriptor.getSecurityRoleNamesByPrincipal(principalName);
runAsIdentity = new RunAsIdentity(roleName, principalName, extraRoleNames);
}
if (secMetaData != null && secMetaData.getUseCallerIdentity())
this.isUseCallerIdentity = true;
securityManager = container.getSecurityManager();
realmMapping = container.getRealmMapping();
//authorizationManager = container.getAuthorizationManager();
try
{
// Get the timeout method
ejbTimeout = TimedObject.class.getMethod("ejbTimeout", new Class[]{Timer.class});
}
catch (NoSuchMethodException ignore)
{
}
if(securityManager != null)
{
appSecurityDomain = securityManager.getSecurityDomain();
appSecurityDomain = SecurityUtil.unprefixSecurityDomain(appSecurityDomain);
}
ejbName = beanMetaData.getEjbName();
ejbCS = container.getBeanClass().getProtectionDomain().getCodeSource();
securityManagement = (ISecurityManagement) container.getSecurityManagement();
}
}
Called by the super class to set the container to which this interceptor
belongs. We obtain the security manager and runAs identity to use here. |