niagara-ax/modules/cfr_output/com/tridium/fox/kerberos/KerberosAuthenticator.java
2026-03-17 13:31:18 -07:00

124 lines
5.8 KiB
Java

/*
* Decompiled with CFR 0.152.
*
* Could not load the following classes:
* javax.baja.log.Log
* javax.baja.security.BICredentials
* javax.baja.security.BUsernameAndPassword
* javax.baja.security.kerberos.BKerberosCredentials
* javax.baja.util.Lexicon
*/
package com.tridium.fox.kerberos;
import com.sun.security.jgss.GSSUtil;
import com.tridium.fox.kerberos.GSSDelegCredAction;
import com.tridium.fox.kerberos.KerberosCallbackHandler;
import com.tridium.fox.kerberos.KerberosConfig;
import com.tridium.fox.message.FoxMessage;
import com.tridium.fox.session.FoxSession;
import javax.baja.log.Log;
import javax.baja.security.BICredentials;
import javax.baja.security.BUsernameAndPassword;
import javax.baja.security.kerberos.BKerberosCredentials;
import javax.baja.util.Lexicon;
import javax.security.auth.Subject;
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;
public class KerberosAuthenticator {
private static final String KERB_AUTH_STARTED = "fox.kerberos.authStarted";
private static final String KERB_USER_KERB = "fox.kerberos.user.kerberos";
private static final String KERB_USER_LOCAL = "fox.kerberos.user.local";
private static final String KERB_LOGIN = "fox.kerberos.login";
private static final String KERB_LOGIN_FAILED = "fox.kerberos.loginFailed";
static final Lexicon lex = Lexicon.make((Class)(class$com$tridium$fox$kerberos$KerberosAuthenticator == null ? (class$com$tridium$fox$kerberos$KerberosAuthenticator = KerberosAuthenticator.class$("com.tridium.fox.kerberos.KerberosAuthenticator")) : class$com$tridium$fox$kerberos$KerberosAuthenticator));
static final Log log = Log.getLog((String)"fox.kerberos");
static /* synthetic */ Class class$com$tridium$fox$kerberos$KerberosAuthenticator;
public static void authenticate(FoxSession foxSession, FoxMessage foxMessage, BICredentials bICredentials) throws Exception {
Object object;
log.trace(lex.getText(KERB_AUTH_STARTED));
boolean bl = false;
String string = "";
String string2 = "";
if (bICredentials instanceof BUsernameAndPassword) {
object = (BUsernameAndPassword)bICredentials;
string = object.getUsername();
if (string.startsWith("kerberos:")) {
bl = true;
string = string.substring(string.indexOf(":") + 1);
}
string2 = object.getPassword().getValue();
} else if (bICredentials instanceof BKerberosCredentials) {
bl = true;
} else {
throw new IllegalStateException();
}
object = new FoxMessage();
String string3 = bl ? "authInputKerb" : "authInputLocal";
((FoxMessage)object).add("authInput", string3);
foxSession.setState("client.tune send firstMessage: userType=" + string3);
foxSession.sendTuning("authMessage1", (FoxMessage)object);
if (bl) {
log.trace(lex.getText(KERB_USER_KERB, new Object[]{string}));
String string4 = foxMessage.getString("realm");
String string5 = foxMessage.getString("kdc");
String string6 = foxMessage.getString("server") + "@" + string4;
System.setProperty("java.security.krb5.realm", string4);
System.setProperty("java.security.krb5.kdc", string5);
if (bICredentials instanceof BKerberosCredentials) {
BKerberosCredentials bKerberosCredentials = (BKerberosCredentials)bICredentials;
Subject subject = GSSUtil.createSubject(bKerberosCredentials.getCredential().getName(), bKerberosCredentials.getCredential());
Subject.doAs(subject, new GSSDelegCredAction(string6, foxSession));
bKerberosCredentials.destroyTicket();
} else {
try {
string = string + "@" + string4;
LoginContext loginContext = KerberosAuthenticator.kerberosClientLogin(string, string2, foxSession);
Subject.doAs(loginContext.getSubject(), new GSSDelegCredAction(string6, foxSession));
loginContext.logout();
}
catch (LoginException loginException) {
FoxMessage foxMessage2 = new FoxMessage();
byte[] byArray = new byte[]{};
foxMessage2.add("token", byArray);
foxSession.setState("client.tune sendLogin");
foxSession.sendTuning("clientToken", foxMessage2);
}
}
} else {
log.trace(lex.getText(KERB_USER_LOCAL, new Object[]{string}));
FoxMessage foxMessage3 = new FoxMessage();
foxMessage3.add("username", string);
foxMessage3.add("password", string2);
foxSession.setState("client.tune sendLogin");
foxSession.sendTuning("login", foxMessage3);
}
}
private static LoginContext kerberosClientLogin(String string, String string2, FoxSession foxSession) throws LoginException {
log.trace(lex.getText(KERB_LOGIN));
KerberosConfig kerberosConfig = new KerberosConfig(string);
LoginContext loginContext = null;
try {
loginContext = new LoginContext("com.tridium.fox.session.KerberosAuthenticator", null, new KerberosCallbackHandler(string, string2), kerberosConfig);
loginContext.login();
}
catch (LoginException loginException) {
log.error(lex.getText(KERB_LOGIN_FAILED));
throw loginException;
}
return loginContext;
}
static /* synthetic */ Class class$(String string) {
try {
return Class.forName(string);
}
catch (ClassNotFoundException classNotFoundException) {
throw new NoClassDefFoundError(classNotFoundException.getMessage());
}
}
}