tx = inboundTxCurrent.getCurrentTransaction();
if (tx != null) {
transactionManager.resume(tx);
}
try {
SimplePrincipal principal = null;
Object credential = null;
if (sasCurrent != null) {
final byte[] incomingName = sasCurrent.get_incoming_principal_name();
if ( incomingName != null && incomingName.length > 0) {
//we have an identity token, which is a trust based mechanism
if (incomingName.length > 0) {
String name = new String(incomingName, "UTF-8");
int domainIndex = name.indexOf('@');
if (domainIndex > 0)
name = name.substring(0, domainIndex);
principal = new SimplePrincipal(name);
//we don't have any real way to establish trust here
//we just use the SASCurrent as a credential, and a custom login
//module can make a decision for us.
credential = sasCurrent;
}
} else {
//the client has just sent a username and password
final byte[] username = sasCurrent.get_incoming_username();
final byte[] incomingPassword = sasCurrent.get_incoming_password();
if(username.length > 0) {
String name = new String(username, "UTF-8");
int domainIndex = name.indexOf('@');
if (domainIndex > 0) {
name = name.substring(0, domainIndex);
}
principal = new SimplePrincipal(name);
credential = new String(incomingPassword, "UTF-8").toCharArray();
}
}
if (securityDomain != null) {