X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=security%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fusermgt%2FJaasUserAccessor.java;h=aefe447adc0df6b3b04e95d9aafeac6f596cadea;hb=ddd261f331280640c5b53c7128230b629ebcd268;hp=8102b82fe22a6dd447b920d2abbf6f41869e3575;hpb=92e23e5ecf9614f2ab770a8cdedc0b21ddf1e127;p=utils diff --git a/security/src/main/java/org/wamblee/usermgt/JaasUserAccessor.java b/security/src/main/java/org/wamblee/usermgt/JaasUserAccessor.java index 8102b82f..aefe447a 100644 --- a/security/src/main/java/org/wamblee/usermgt/JaasUserAccessor.java +++ b/security/src/main/java/org/wamblee/usermgt/JaasUserAccessor.java @@ -1,57 +1,60 @@ /* * 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); @@ -60,42 +63,58 @@ public class JaasUserAccessor implements UserAccessor { /* * (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 principals = subject.getPrincipals(); - Principal userPrincipal = null; - for ( Principal principal: principals) { - if ( principal.getClass().equals(userPrincipalClass)) { - if ( userPrincipal != null ) { + Set 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; } - }