2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster/**
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster *
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * Copyright (c) 2005 Sun Microsystems Inc. All Rights Reserved
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster *
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * The contents of this file are subject to the terms
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * of the Common Development and Distribution License
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * (the License). You may not use this file except in
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * compliance with the License.
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster *
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * You can obtain a copy of the License at
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * opensso/legal/CDDLv1.0.txt
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * See the License for the specific language governing
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * permission and limitations under the License.
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster *
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * When distributing Covered Code, include this CDDL
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * Header Notice in each file and include the License file
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * at opensso/legal/CDDLv1.0.txt.
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * If applicable, add the following below the CDDL Header,
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * with the fields enclosed by brackets [] replaced by
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * your own identifying information:
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster *
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * $Id: Anonymous.java,v 1.4 2009/06/17 21:53:19 ericow Exp $
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster *
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster */
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Fosterpackage com.sun.identity.authentication.modules.anonymous;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Fosterimport java.util.Iterator;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Fosterimport java.util.Map;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Fosterimport java.util.ResourceBundle;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Fosterimport java.util.Set;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Fosterimport javax.security.auth.Subject;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Fosterimport javax.security.auth.callback.Callback;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Fosterimport javax.security.auth.callback.CallbackHandler;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Fosterimport javax.security.auth.callback.NameCallback;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Fosterimport javax.security.auth.callback.UnsupportedCallbackException;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Fosterimport com.sun.identity.shared.datastruct.CollectionHelper;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Fosterimport com.sun.identity.authentication.spi.PagePropertiesCallback;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Fosterimport com.sun.identity.authentication.spi.AMLoginModule;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Fosterimport com.sun.identity.authentication.spi.AuthLoginException;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Fosterimport com.sun.identity.authentication.util.ISAuthConstants;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster/*
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * This module can be called in this way:
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * <protocol>://<server host>:<server port>/<server deploy uri>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * /UI/login?org=<my org>&IDToken1=<Anonymous user name>&module=Anonymous
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * OR &module=Anonymous
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster */
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Fosterpublic class Anonymous extends AMLoginModule {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private static com.sun.identity.shared.debug.Debug debug = null;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private static final int DEFAULT_ANONYMOUS_AUTH_LEVEL = 0;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private static final String amAuthAnonymous = "amAuthAnonymous";
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private ResourceBundle bundle = null;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private Map sharedState;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private String userTokenId;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private String defaultAnonUser;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private Set validAnonUsernames;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private int authLevel;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private String errorMsg = null;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private String usernameParam = null;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster // the authentication status
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private boolean succeeded = false;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private boolean commitSucceeded = false;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster // username and password
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private AnonymousAuthPrincipal userPrincipal;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private CallbackHandler callbackHandler;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster // whether to perform case sensitive authentication
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private boolean isCaseSensitive = false;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster boolean useSharedstate = false;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster public Anonymous() {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster public void init(Subject subject, Map sharedState, Map options) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (debug == null) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug = com.sun.identity.shared.debug.Debug.getInstance(
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster amAuthAnonymous);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster this.sharedState = sharedState;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster java.util.Locale locale = getLoginLocale();
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster bundle = amCache.getResBundle(amAuthAnonymous, locale);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (debug.messageEnabled()) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug.message("Anonymous resbundle locale="+locale);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster try {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster validAnonUsernames = (Set)options.get(
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster "iplanet-am-auth-anonymous-users-list");
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (validAnonUsernames == null) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug.error("No Anonymous Service Template Created");
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster errorMsg = "AnonValidateEx";
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster defaultAnonUser = CollectionHelper.getMapAttr(options,
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster "iplanet-am-auth-anonymous-default-user-name");
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster String tmp = CollectionHelper.getMapAttr(options,
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster "iplanet-am-auth-anonymous-auth-level");
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (tmp == null || tmp.length() == 0) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster authLevel = DEFAULT_ANONYMOUS_AUTH_LEVEL;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster } else {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster try {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster authLevel = Integer.parseInt(tmp);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster } catch (Exception e) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug.error("Invalid auth level " + tmp);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster authLevel = DEFAULT_ANONYMOUS_AUTH_LEVEL;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster callbackHandler = getCallbackHandler();
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster isCaseSensitive = Boolean.valueOf(CollectionHelper.getMapAttr(
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster options, "iplanet-am-auth-anonymous-case-sensitive", "false")
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ).booleanValue();
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (debug.messageEnabled()) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug.message("isCaseSensitive: "+isCaseSensitive);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster } catch(Exception ex) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (debug.messageEnabled()) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug.message("possible exception is ",ex);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug.error(
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster "Failed getting anonymous attributes for organization ");
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster errorMsg = "AnonValidateEx";
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster public int process (Callback[] callbacks, int state)
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster throws AuthLoginException {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (errorMsg != null) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster throw new AuthLoginException(amAuthAnonymous, errorMsg, null);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster useSharedstate = isSharedStateEnabled();
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster try {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (useSharedstate) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster usernameParam = (String) sharedState.get(getUserKey());
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (processAnonUser(usernameParam)) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster setAuthLevel(authLevel);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster return ISAuthConstants.LOGIN_SUCCEED;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (callbacks !=null && callbacks.length > 0) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (callbacks[0] instanceof NameCallback) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster usernameParam = ((NameCallback)callbacks[0]).getName();
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (debug.messageEnabled()) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug.message("Anonymous:process received NameCallback "
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster + usernameParam);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (processAnonUser(usernameParam)) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster setAuthLevel(authLevel);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster return ISAuthConstants.LOGIN_SUCCEED;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (validAnonUsernames !=null && !(validAnonUsernames.isEmpty())) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster usernameParam = sendCallback();
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster } else {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster usernameParam = defaultAnonUser;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster storeUsernamePasswd(usernameParam, null);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster processAnonUser(usernameParam);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster setAuthLevel(authLevel);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (debug.messageEnabled()) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug.message (
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster "Set auth level: " + authLevel +
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster "\nAnonymous userid: " + userTokenId);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster } catch (Exception e) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug.error("login: User not found in valid Anon List");
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster setFailureID(usernameParam);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster throw new AuthLoginException(
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster amAuthAnonymous, "AnonValidateEx", null);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster return ISAuthConstants.LOGIN_SUCCEED;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster /**
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * check if the userName is a valid anonymous user name
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster * in either case sensitive or insensitive cases.
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster */
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private boolean isValidAnonUserName() {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (isCaseSensitive) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster return validAnonUsernames.contains(usernameParam);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster } else {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster for (Iterator it = validAnonUsernames.iterator(); it.hasNext(); ) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster String name = (String) it.next();
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (name != null && name.equalsIgnoreCase(usernameParam)) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster usernameParam = name;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster return true;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster return false;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster public java.security.Principal getPrincipal() {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (userPrincipal != null) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster return userPrincipal;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster } else if (userTokenId != null) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster userPrincipal = new AnonymousAuthPrincipal(userTokenId);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster return userPrincipal;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster } else {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster return null;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster public void destroyModuleState() {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster userTokenId = null;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster userPrincipal = null;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster public void nullifyUsedVars() {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster bundle = null;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster sharedState = null;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster defaultAnonUser = null;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster validAnonUsernames = null;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster errorMsg = null;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster usernameParam = null;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster callbackHandler = null;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private String sendCallback() throws AuthLoginException {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (callbackHandler == null) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster throw new AuthLoginException(amAuthAnonymous, "NoCallbackHandler",
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster null);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster String username = null;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster try {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster Callback[] callbacks = new Callback[2];
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster String header = bundle.getString("moduleHeader");
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster PagePropertiesCallback ppc = new PagePropertiesCallback(
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster null, header, null, 0, null, false, null);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster callbacks[0] = ppc;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster callbacks[1] = new NameCallback (bundle.getString("username"));
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (debug.messageEnabled()) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug.message("Callback 0 is.. :" + callbacks[0]);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug.message("Callback 1 is.. :" + callbacks[1]);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster callbackHandler.handle(callbacks);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster username = ((NameCallback)callbacks[1]).getName();
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster return username;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster } catch (IllegalArgumentException ill) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug.message("message type missing");
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster throw new AuthLoginException(amAuthAnonymous, "IllegalArgs", null);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster } catch (java.io.IOException ioe) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster throw new AuthLoginException(ioe);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster } catch (UnsupportedCallbackException uce) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster throw new AuthLoginException(amAuthAnonymous, "NoCallbackHandler",
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster null);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster private boolean processAnonUser(String usernameParam)
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster throws AuthLoginException {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (usernameParam == null || usernameParam.length() == 0) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug.message("User Name entered is either NULL or Empty");
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (useSharedstate) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster return false;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster throw new AuthLoginException(amAuthAnonymous,"UserError", null);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster } else if (usernameParam.equalsIgnoreCase(defaultAnonUser)) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug.message("User Type: default Anon User");
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (isCaseSensitive && !usernameParam.equals(defaultAnonUser)) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (useSharedstate) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster return false;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster setFailureID(usernameParam);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster throw new AuthLoginException(amAuthAnonymous, "AnonValidateEx",
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster null);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster userTokenId = usernameParam;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster } else if (validAnonUsernames != null && isValidAnonUserName()) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug.message("user is in anonymoususer's list");
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster debug.message("UserType: non default Anon User");
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster userTokenId = usernameParam;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster } else {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster if (useSharedstate) {
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster return false;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster setFailureID(usernameParam);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster throw new AuthLoginException(amAuthAnonymous, "AnonValidateEx",
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster null);
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster return true;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster }
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster}