djencks 2005/11/22 23:04:14
Modified:
modules/openejb-builder/src/java/org/openejb/corba/security/config/tss
TSSConfigEditor.java
Log:
GERONIMO-1122 Support 3 levels of principal wrapping. I did not change the
schema version.
Revision Changes Path
1.10 +36 -20
openejb/modules/openejb-builder/src/java/org/openejb/corba/security/config/tss/TSSConfigEditor.java
Index: TSSConfigEditor.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/corba/security/config/tss/TSSConfigEditor.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- TSSConfigEditor.java 27 Oct 2005 19:10:14 -0000 1.9
+++ TSSConfigEditor.java 23 Nov 2005 04:04:14 -0000 1.10
@@ -46,6 +46,7 @@
import java.util.Iterator;
import java.util.List;
+import java.lang.reflect.Constructor;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
@@ -69,6 +70,7 @@
import org.apache.geronimo.security.deploy.DefaultPrincipal;
import org.apache.geronimo.security.deployment.SecurityBuilder;
import org.apache.geronimo.xbeans.geronimo.security.GerDefaultPrincipalType;
+import org.apache.geronimo.kernel.ClassLoading;
import org.openejb.xbeans.csiv2.tss.TSSAssociationOption;
import org.openejb.xbeans.csiv2.tss.TSSCompoundSecMechType;
@@ -144,7 +146,7 @@
TSSCompoundSecMechType[] mechList =
tss.getCompoundSecMechTypeList().getCompoundSecMechArray();
for (int i = 0; i < mechList.length; i++) {
- TSSCompoundSecMechConfig cMech =
extractCompoundSecMech(mechList[i]);
+ TSSCompoundSecMechConfig cMech =
extractCompoundSecMech(mechList[i], cl);
cMech.setTransport_mech(tssConfig.getTransport_mech());
mechListConfig.add(cMech);
}
@@ -165,7 +167,7 @@
return sslConfig;
}
- protected static TSSCompoundSecMechConfig
extractCompoundSecMech(TSSCompoundSecMechType mech) {
+ protected static TSSCompoundSecMechConfig
extractCompoundSecMech(TSSCompoundSecMechType mech, ClassLoader cl) throws
DeploymentException {
TSSCompoundSecMechConfig result = new TSSCompoundSecMechConfig();
@@ -176,7 +178,7 @@
}
if (mech.isSetSasMech()) {
- result.setSas_mech(extractSASMech(mech.getSasMech()));
+ result.setSas_mech(extractSASMech(mech.getSasMech(), cl));
}
return result;
@@ -192,7 +194,7 @@
return gssupConfig;
}
- protected static TSSSASMechConfig extractSASMech(TSSSasMechType sasMech)
{
+ protected static TSSSASMechConfig extractSASMech(TSSSasMechType sasMech,
ClassLoader cl) throws DeploymentException {
TSSSASMechConfig sasMechConfig = new TSSSASMechConfig();
@@ -219,27 +221,41 @@
sasMechConfig.addIdentityToken(new TSSITTAnonymous());
}
if (identityTokenTypes.isSetITTPrincipalNameGSSUP()) {
- String realmName =
identityTokenTypes.getITTPrincipalNameGSSUP().getRealmName();
- String domainName =
identityTokenTypes.getITTPrincipalNameGSSUP().getDomainName();
-
- realmName = (realmName == null ? "" : realmName.trim());
- domainName = (domainName == null ? "" : domainName.trim());
- sasMechConfig.addIdentityToken(new
TSSITTPrincipalNameGSSUP(realmName, domainName));
+ org.openejb.xbeans.csiv2.tss.TSSITTPrincipalNameGSSUPType
ittPrincipalNameGSSUP = identityTokenTypes.getITTPrincipalNameGSSUP();
+ String principalClassName =
ittPrincipalNameGSSUP.getPrincipalClass();
+ Class principalClass;
+ try {
+ principalClass =
ClassLoading.loadClass(principalClassName, cl);
+ } catch (ClassNotFoundException e) {
+ throw new DeploymentException("Could not load principal
class", e);
+ }
+ String domainName = ittPrincipalNameGSSUP.isSetDomain() ?
ittPrincipalNameGSSUP.getDomain().trim() : null;
+ String realmName = null;
+ if (domainName != null &&
ittPrincipalNameGSSUP.isSetRealm()) {
+ realmName = ittPrincipalNameGSSUP.getRealm().trim();
+ }
+
+
+ try {
+ sasMechConfig.addIdentityToken(new
TSSITTPrincipalNameGSSUP(principalClass, realmName, domainName));
+ } catch (NoSuchMethodException e) {
+ throw new DeploymentException("Could not find principal
class constructor", e);
+ }
}
if (identityTokenTypes.isSetITTDistinguishedName()) {
- String realmName =
identityTokenTypes.getITTDistinguishedName().getRealmName();
- String domainName =
identityTokenTypes.getITTDistinguishedName().getDomainName();
+ String realmName =
identityTokenTypes.getITTDistinguishedName().getRealm();
+ String domainName =
identityTokenTypes.getITTDistinguishedName().getDomain();
- realmName = (realmName == null ? "" : realmName.trim());
- domainName = (domainName == null ? "" : domainName.trim());
+ realmName = (realmName == null ? null : realmName.trim());
+ domainName = (domainName == null ? null : domainName.trim());
sasMechConfig.addIdentityToken(new
TSSITTDistinguishedName(realmName, domainName));
}
if (identityTokenTypes.isSetITTX509CertChain()) {
- String realmName =
identityTokenTypes.getITTX509CertChain().getRealmName();
- String domainName =
identityTokenTypes.getITTX509CertChain().getDomainName();
+ String realmName =
identityTokenTypes.getITTX509CertChain().getRealm();
+ String domainName =
identityTokenTypes.getITTX509CertChain().getDomain();
- realmName = (realmName == null ? "" : realmName.trim());
- domainName = (domainName == null ? "" : domainName.trim());
+ realmName = (realmName == null ? null : realmName.trim());
+ domainName = (domainName == null ? null : domainName.trim());
sasMechConfig.addIdentityToken(new
TSSITTX509CertChain(realmName, domainName));
}
}