Search in sources :

Example 11 with SimplePrincipal

use of org.jboss.security.SimplePrincipal in project wildfly by wildfly.

the class JASPICAuthenticationMechanism method updateSubjectRoles.

private void updateSubjectRoles(final org.jboss.security.SecurityContext jbossSct) {
    if (jbossSct == null) {
        throw UndertowLogger.ROOT_LOGGER.nullParamter("org.jboss.security.SecurityContext");
    }
    RoleGroup contextRoleGroup = jbossSct.getUtil().getRoles();
    if (contextRoleGroup == null) {
        return;
    }
    Collection<Role> contextRoles = contextRoleGroup.getRoles();
    if (contextRoles.isEmpty()) {
        return;
    }
    Subject subject = jbossSct.getUtil().getSubject();
    Set<Group> groupPrincipals = subject.getPrincipals(Group.class);
    Group subjectRoleGroup = null;
    for (Group candidate : groupPrincipals) {
        if (candidate.getName().equals(ROLES_IDENTIFIER)) {
            subjectRoleGroup = candidate;
            break;
        }
    }
    if (subjectRoleGroup == null) {
        subjectRoleGroup = new SimpleGroup(ROLES_IDENTIFIER);
        subject.getPrincipals().add(subjectRoleGroup);
    }
    for (Role role : contextRoles) {
        Principal rolePrincipal = new SimplePrincipal(role.getRoleName());
        subjectRoleGroup.addMember(rolePrincipal);
    }
}
Also used : SimpleRole(org.jboss.security.identity.plugins.SimpleRole) Role(org.jboss.security.identity.Role) SimpleGroup(org.jboss.security.SimpleGroup) RoleGroup(org.jboss.security.identity.RoleGroup) SimpleRoleGroup(org.jboss.security.identity.plugins.SimpleRoleGroup) Group(java.security.acl.Group) SimpleGroup(org.jboss.security.SimpleGroup) Subject(javax.security.auth.Subject) Principal(java.security.Principal) SimplePrincipal(org.jboss.security.SimplePrincipal) SimplePrincipal(org.jboss.security.SimplePrincipal) RoleGroup(org.jboss.security.identity.RoleGroup) SimpleRoleGroup(org.jboss.security.identity.plugins.SimpleRoleGroup)

Example 12 with SimplePrincipal

use of org.jboss.security.SimplePrincipal in project wildfly by wildfly.

the class SimpleSecurityManager method push.

public void push(final String securityDomain, String userName, char[] password, final Subject subject) {
    final SecurityContext previous = SecurityContextAssociation.getSecurityContext();
    contexts.push(previous);
    SecurityContext current = establishSecurityContext(securityDomain);
    if (propagate && previous != null) {
        current.setSubjectInfo(getSubjectInfo(previous));
        current.setIncomingRunAs(previous.getOutgoingRunAs());
    }
    RunAs currentRunAs = current.getIncomingRunAs();
    boolean trusted = currentRunAs != null && currentRunAs instanceof RunAsIdentity;
    if (trusted == false) {
        SecurityContextUtil util = current.getUtil();
        util.createSubjectInfo(new SimplePrincipal(userName), new String(password), subject);
    }
}
Also used : SecurityContextUtil(org.jboss.security.SecurityContextUtil) RunAs(org.jboss.security.RunAs) SecurityContext(org.jboss.security.SecurityContext) RunAsIdentity(org.jboss.security.RunAsIdentity) SimplePrincipal(org.jboss.security.SimplePrincipal)

Example 13 with SimplePrincipal

use of org.jboss.security.SimplePrincipal in project wildfly by wildfly.

the class WildFlySecurityManager method validateUserAndRole.

@Override
public boolean validateUserAndRole(final String username, final String password, final Set<Role> roles, final CheckType checkType) {
    if (defaultUser.equals(username) && defaultPassword.equals(password))
        return true;
    if (securityDomainContext == null)
        throw MessagingLogger.ROOT_LOGGER.securityDomainContextNotSet();
    final Subject subject = new Subject();
    // The authentication call here changes the subject and that subject must be used later.  That is why we don't call validateUser(String, String) here.
    boolean authenticated = securityDomainContext.getAuthenticationManager().isValid(new SimplePrincipal(username), password, subject);
    if (authenticated) {
        authenticated = AccessController.doPrivileged(new PrivilegedAction<Boolean>() {

            @Override
            public Boolean run() {
                final SimplePrincipal principal = new SimplePrincipal(username);
                // push a new security context if there is not one.
                final SecurityContext currentSecurityContext = SecurityContextAssociation.getSecurityContext();
                final SecurityContext securityContext;
                if (currentSecurityContext == null) {
                    try {
                        securityContext = SecurityContextFactory.createSecurityContext(principal, password, subject, securityDomainContext.getAuthenticationManager().getSecurityDomain());
                    } catch (Exception e) {
                        throw new RuntimeException(e);
                    }
                } else {
                    securityContext = currentSecurityContext;
                    securityContext.getUtil().createSubjectInfo(principal, password, subject);
                }
                SecurityContextAssociation.setSecurityContext(securityContext);
                final Set<Principal> principals = new HashSet<Principal>();
                for (Role role : roles) {
                    if (checkType.hasRole(role)) {
                        principals.add(new SimplePrincipal(role.getName()));
                    }
                }
                final boolean authenticated = securityDomainContext.getAuthorizationManager().doesUserHaveRole(new SimplePrincipal(username), principals);
                // restore the previous security context if any
                SecurityContextAssociation.setSecurityContext(currentSecurityContext);
                return authenticated;
            }
        });
    }
    return authenticated;
}
Also used : Role(org.apache.activemq.artemis.core.security.Role) PrivilegedAction(java.security.PrivilegedAction) SecurityContext(org.jboss.security.SecurityContext) Subject(javax.security.auth.Subject) SimplePrincipal(org.jboss.security.SimplePrincipal) Principal(java.security.Principal) SimplePrincipal(org.jboss.security.SimplePrincipal) HashSet(java.util.HashSet)

Example 14 with SimplePrincipal

use of org.jboss.security.SimplePrincipal in project wildfly by wildfly.

the class AddRoleLoginModule method getRoleSets.

@Override
protected Group[] getRoleSets() throws LoginException {
    Group roles = new SimpleGroup(SecurityConstants.ROLES_IDENTIFIER);
    roles.addMember(new SimplePrincipal(role));
    return new Group[] { roles };
}
Also used : SimpleGroup(org.jboss.security.SimpleGroup) Group(java.security.acl.Group) SimpleGroup(org.jboss.security.SimpleGroup) SimplePrincipal(org.jboss.security.SimplePrincipal)

Aggregations

SimplePrincipal (org.jboss.security.SimplePrincipal)14 Principal (java.security.Principal)7 SimpleGroup (org.jboss.security.SimpleGroup)7 Group (java.security.acl.Group)6 SecurityContext (org.jboss.security.SecurityContext)4 Subject (javax.security.auth.Subject)3 LoginException (javax.security.auth.login.LoginException)3 EJBAccessException (javax.ejb.EJBAccessException)2 AroundInvoke (javax.interceptor.AroundInvoke)2 IllegalStateException (javax.resource.spi.IllegalStateException)2 NameCallback (javax.security.auth.callback.NameCallback)2 Connection (org.jboss.remoting3.Connection)2 RunAs (org.jboss.security.RunAs)2 RunAsIdentity (org.jboss.security.RunAsIdentity)2 SecurityContextUtil (org.jboss.security.SecurityContextUtil)2 ObjectCallback (org.jboss.security.auth.callback.ObjectCallback)2 SecurityIdentity (org.wildfly.security.auth.server.SecurityIdentity)2 ExternalCredential (io.undertow.security.idm.ExternalCredential)1 PrivilegedAction (java.security.PrivilegedAction)1 HashSet (java.util.HashSet)1