Skip to content

Commit

Permalink
AS7-4087: tie in the SimpleSecurityManager with the JNDIBasedSecurity…
Browse files Browse the repository at this point in the history
…Management
  • Loading branch information
anilsaldhana authored and n1hility committed Mar 10, 2012
1 parent 46e40d2 commit d5dc2d8
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,12 @@ protected void execute(DeploymentProcessorTarget processorTarget) {
newControllers.add(target.addService(JaasConfigurationService.SERVICE_NAME, jaasConfigurationService)
.addListener(verificationHandler).setInitialMode(ServiceController.Mode.ACTIVE).install());

newControllers.add(target.addService(SimpleSecurityManagerService.SERVICE_NAME, new SimpleSecurityManagerService())
//add Simple Security Manager Service
final SimpleSecurityManagerService simpleSecurityManagerService = new SimpleSecurityManagerService();

newControllers.add(target.addService(SimpleSecurityManagerService.SERVICE_NAME, simpleSecurityManagerService)
.addDependency(SecurityManagementService.SERVICE_NAME, ISecurityManagement.class,
simpleSecurityManagerService.getSecurityManagementInjector())
.addListener(verificationHandler).install());

context.addStep(new AbstractDeploymentChainStep() {
Expand All @@ -182,5 +187,4 @@ protected void execute(DeploymentProcessorTarget processorTarget) {
}, OperationContext.Stage.RUNTIME);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
import org.jboss.remoting3.security.UserInfo;
import org.jboss.security.AuthenticationManager;
import org.jboss.security.AuthorizationManager;
import org.jboss.security.ISecurityManagement;
import org.jboss.security.RunAs;
import org.jboss.security.RunAsIdentity;
import org.jboss.security.SecurityContext;
Expand All @@ -66,6 +67,8 @@
public class SimpleSecurityManager {
private ThreadLocalStack<SecurityContext> contexts = new ThreadLocalStack<SecurityContext>();

private static ISecurityManagement securityManagement = null;

private static PrivilegedAction<SecurityContext> securityContext() {
return new PrivilegedAction<SecurityContext>() {
public SecurityContext run() {
Expand All @@ -78,13 +81,18 @@ private static SecurityContext establishSecurityContext(final String securityDom
// Do not use SecurityFactory.establishSecurityContext, its static init is broken.
try {
final SecurityContext securityContext = SecurityContextFactory.createSecurityContext(securityDomain);
securityContext.setSecurityManagement(securityManagement);
SecurityContextAssociation.setSecurityContext(securityContext);
return securityContext;
} catch (Exception e) {
throw SecurityMessages.MESSAGES.securityException(e);
}
}

public void setSecurityManagement(ISecurityManagement iSecurityManagement){
securityManagement = iSecurityManagement;
}

public Principal getCallerPrincipal() {
final SecurityContext securityContext = doPrivileged(securityContext());
if (securityContext == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,22 +22,28 @@
package org.jboss.as.security.service;

import org.jboss.as.security.SecurityExtension;
import org.jboss.msc.inject.Injector;
import org.jboss.msc.service.Service;
import org.jboss.msc.service.ServiceName;
import org.jboss.msc.service.StartContext;
import org.jboss.msc.service.StartException;
import org.jboss.msc.service.StopContext;
import org.jboss.msc.value.InjectedValue;
import org.jboss.security.ISecurityManagement;

/**
* @author <a href="mailto:cdewolf@redhat.com">Carlo de Wolf</a>
* @author Anil Saldhana
*/
public class SimpleSecurityManagerService implements Service<SimpleSecurityManager> {
public static final ServiceName SERVICE_NAME = SecurityExtension.JBOSS_SECURITY.append("simple-security-manager");

private final SimpleSecurityManager securityManager = new SimpleSecurityManager();
private final InjectedValue<ISecurityManagement> securityManagementValue = new InjectedValue<ISecurityManagement>();

@Override
public void start(StartContext context) throws StartException {
securityManager.setSecurityManagement(securityManagementValue.getValue());
}

@Override
Expand All @@ -48,4 +54,13 @@ public void stop(StopContext context) {
public SimpleSecurityManager getValue() throws IllegalStateException, IllegalArgumentException {
return securityManager;
}

/**
* Target {@code Injector}
*
* @return target
*/
public Injector<ISecurityManagement> getSecurityManagementInjector() {
return securityManagementValue;
}
}

0 comments on commit d5dc2d8

Please sign in to comment.