/**
* $RCSfile: ,v $
* $Revision: $
* $Date: $
*
* Copyright (C) 2004-2011 Jive Software. All rights reserved.
*
* 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.jivesoftware;
import javax.security.auth.login.AppConfigurationEntry;
import javax.security.auth.login.Configuration;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;
public class GSSAPIConfiguration extends Configuration {
Map<String, Vector<AppConfigurationEntry>> configs;
GSSAPIConfiguration() {
super();
init(true);
}
GSSAPIConfiguration(boolean config_from_file) {
super();
init(config_from_file);
}
private void init(boolean config_from_file) {
configs = new HashMap<String, Vector<AppConfigurationEntry>>();
//The structure of the options is not well documented in terms of
//data types. Since the file version of the Configuration object
//puts things in quotes, String is assumed. But boolean options
//do not have quotes, and my represent different types internally.
HashMap<String, String> c_options = new HashMap<String, String>();
//If Kerberos config is not from a file, it's not possible to (re-)read the config file.
//So don't set refreshKrb5Config
if (config_from_file) {
c_options.put("refreshKrb5Config", "true");
}
c_options.put("doNotPrompt", "true");
c_options.put("useTicketCache", "true");
c_options.put("debug", "true");
putAppConfigurationEntry("com.sun.security.jgss.initiate", "com.sun.security.auth.module.Krb5LoginModule", AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, c_options);
putAppConfigurationEntry("com.sun.security.jgss.krb5.initiate", "com.sun.security.auth.module.Krb5LoginModule", AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, c_options);
}
public AppConfigurationEntry[] getAppConfigurationEntry(String name) {
AppConfigurationEntry[] a = new AppConfigurationEntry[1];
if (configs.containsKey(name)) {
Vector<AppConfigurationEntry> v = configs.get(name);
a = v.toArray(a);
return a;
}
else {
return null;
}
}
public boolean putAppConfigurationEntry(String name, String module, AppConfigurationEntry.LoginModuleControlFlag controlFlag, Map<String,String> options) {
Vector<AppConfigurationEntry> v;
if (configs.containsKey(name)) {
v = configs.get(name);
}
else {
v = new Vector<AppConfigurationEntry>();
configs.put(name, v);
}
return v.add(new AppConfigurationEntry(module, controlFlag, options));
}
public void refresh() {
}
}