/*
* Copyright 2005 the original author or authors.
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.wamblee.usermgt;
import java.security.AccessController;
import java.security.Principal;
+
import java.util.Set;
import javax.security.auth.Subject;
+
/**
- * Implementation of the user accessor that retrieves user information
- * from JAAS.
+ * Implementation of the user accessor that retrieves user information from
+ * JAAS.
*
* @author Erik Brakkee
*/
public class JaasUserAccessor implements UserAccessor {
-
/**
- * User administration to use.
+ * User administration to use.
*/
private UserAdministration admin;
/**
- * Class of the JAAS user principal.
+ * Class of the JAAS user principal.
*/
private Class userPrincipalClass;
- /**
+/**
* Constructs user accessor.
* @param aAdmin User administration.
* @param aUserClassName Class name of the user principal.
*/
public JaasUserAccessor(UserAdministration aAdmin, String aUserClassName) {
admin = aAdmin;
+
try {
userPrincipalClass = Class.forName(aUserClassName);
- if ( !Principal.class.isAssignableFrom(userPrincipalClass)) {
- throw new IllegalArgumentException("Specified class '" + aUserClassName + "' is not a subclass of '" +
- Principal.class.getName());
+
+ if (!Principal.class.isAssignableFrom(userPrincipalClass)) {
+ throw new IllegalArgumentException("Specified class '"
+ + aUserClassName + "' is not a subclass of '"
+ + Principal.class.getName());
}
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
/*
* (non-Javadoc)
- *
+ *
* @see org.wamblee.usermgt.UserAccessor#getCurrentUser()
*/
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public User getCurrentUser() {
Subject subject = Subject.getSubject(AccessController.getContext());
+
if (subject == null) {
return null;
}
+
Principal userPrincipal = getUserPrincipal(subject);
-
+
return admin.getUser(userPrincipal.getName());
}
/**
- * Gets the user principal from the subject.
- * @param subject Subject.
- * @return User principal.
- * @throws IllegalArgumentException In case there is a duplicate principal or the principal was not found.
+ * Gets the user principal from the subject.
+ *
+ * @param subject Subject.
+ *
+ * @return User principal.
+ *
+ * @throws IllegalArgumentException In case there is a duplicate principal
+ * or the principal was not found.
*/
private Principal getUserPrincipal(Subject subject) {
- Set<Principal> principals = subject.getPrincipals();
- Principal userPrincipal = null;
- for ( Principal principal: principals) {
- if ( principal.getClass().equals(userPrincipalClass)) {
- if ( userPrincipal != null ) {
+ Set<Principal> principals = subject.getPrincipals();
+ Principal userPrincipal = null;
+
+ for (Principal principal : principals) {
+ if (principal.getClass().equals(userPrincipalClass)) {
+ if (userPrincipal != null) {
throw new IllegalArgumentException(
- "Multiple principals for class '" + userPrincipalClass + "', subject: " + subject);
+ "Multiple principals for class '" + userPrincipalClass
+ + "', subject: " + subject);
}
- userPrincipal = principal;
+
+ userPrincipal = principal;
}
}
- if ( userPrincipal == null ) {
+
+ if (userPrincipal == null) {
throw new IllegalArgumentException(
- "No user principal found for class '" + userPrincipalClass + "', subject: " + subject);
+ "No user principal found for class '" + userPrincipalClass
+ + "', subject: " + subject);
}
+
return userPrincipal;
}
-
}