001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package org.jboss.security.plugins;
023:
024: import java.io.Serializable;
025: import java.util.HashSet;
026: import java.util.Set;
027: import java.security.Principal;
028: import javax.security.auth.Subject;
029:
030: import org.jboss.security.RealmMapping;
031: import org.jboss.security.SubjectSecurityManager;
032: import org.jboss.security.NobodyPrincipal;
033:
034: /** An implementation of SubjectSecurityManager, RealmMapping does not allow
035: any authentication and every check for a role fails.
036:
037: @see #isValid(java.security.Principal, Object, Subject)
038: @see #getPrincipal(java.security.Principal)
039: @see #doesUserHaveRole(java.security.Principal, java.util.Set)
040:
041: @author Scott.Stark@jboss.org
042: @version $Revision: 57203 $
043: */
044: public class NoAccessSecurityManager implements SubjectSecurityManager,
045: RealmMapping, Serializable {
046: static final long serialVersionUID = -5922913661708382384L;
047: private String securityDomain;
048:
049: /** Creates a default JaasSecurityManager for with the
050: given securityDomain name.
051: */
052: public NoAccessSecurityManager(String securityDomain) {
053: this .securityDomain = securityDomain;
054: }
055:
056: /** Get the name of the security domain associated with this security mgr.
057: @return Name of the security manager security domain.
058: */
059: public String getSecurityDomain() {
060: return securityDomain;
061: }
062:
063: /** Get the currently authenticated Subject.
064: @return Always returns null.
065: */
066: public Subject getActiveSubject() {
067: return null;
068: }
069:
070: /** Validate that the given credential is correct for principal.
071: @return always returns true.
072: */
073: public boolean isValid(Principal principal, Object credential) {
074: return false;
075: }
076:
077: /** Validate that the given credential is correct for principal. This does
078: not populate the activeSubject with any state since no authentication
079: is performed.
080: @return always returns true.
081: */
082: public boolean isValid(Principal principal, Object credential,
083: Subject activeSubject) {
084: return false;
085: }
086:
087: /** Always returns the argument principal.
088: @return The argument principal
089: */
090: public Principal getPrincipal(Principal principal) {
091: Principal result = principal;
092: return result;
093: }
094:
095: /** Does the current Subject have a role(a Principal) that equates to one
096: of the role names. This method always returns true.
097: @param principal - ignored.
098: @param roleNames - ignored.
099: @return Always returns true.
100: */
101: public boolean doesUserHaveRole(Principal principal, Set roleNames) {
102: boolean hasRole = false;
103: return hasRole;
104: }
105:
106: /** Return the set of domain roles the principal has been assigned.
107: @return The Set<Principal> with the NobodyPrincipal as the sole role.
108: */
109: public Set getUserRoles(Principal principal) {
110: HashSet roles = new HashSet();
111: roles.add(NobodyPrincipal.NOBODY_PRINCIPAL);
112: return roles;
113: }
114:
115: /** Authenticate principal against credential
116: * @param principal - the user id to authenticate
117: * @param credential - an opaque credential.
118: * @return Always returns true.
119: */
120: private boolean authenticate(Principal principal, Object credential) {
121: boolean authenticated = false;
122: return authenticated;
123: }
124: }
|