Beispiel: Thin Client mit aktivierter Sicherheit ausführen
Ihr Java Thin Application Client benötigt keinen zusätzlichen Code für die Definition von Sicherheitsprovidern mehr, wenn Sie die Sicherheit für Ihre Instanz von WebSphere Application Server aktiviert haben. Dieser Code muss in IBM i Java™ Thin Clients entfernt werden, um Migrations- und Kompatibilitätsprobleme zu vermeiden. Für die Konfiguration der Sicherheitsprovider wird jetzt die Datei "java.security" im Verzeichnis "properties" aus Ihrer WebSphere-Instanz verwendet.
Die Sicherheitsprovider wurden über das Programm in der Methode main()
vor allen Codeabschnitten definiert, die auf Enterprise-Beans zugreifen:
import java.security.*;
...
if (System.getProperty("os.name").equals("OS/400")) {
// Zuerst die Liste der Standardprovider festlegen.
Provider jceProv = null;
Provider jsseProv = null;
Provider sunProv = null;
// Fall berücksichtigen, dass der Provider nicht benötigt wird,
// wenn er nicht im Klassenpfad der Clientanwendung enthalten ist
try {
jceProv = new com.ibm.crypto.provider.IBMJCE();
}
catch (Exception ex) {
ex.printStackTrace();
throw new Exception("Unable to acquire provider.");
}
try {
jsseProv = new com.ibm.jsse.JSSEProvider();
}
catch (Exception ex) {
ex.printStackTrace();
throw new Exception("Unable to acquire provider.");
}
try {
sunProv = new sun.security.provider.Sun();
}
catch (Exception ex) {
ex.printStackTrace();
throw new Exception("Unable to acquire provider.");
}
// Provider früh und vor anderen Providern aktivieren, um
// eine konsistente Leistung und Funktionalität zu gewährleisten
if ( (null != sunProv) && (1 != Security.insertProviderAt(sunProv, 1)) ) {
Security.removeProvider(sunProv.getName());
Security.insertProviderAt(sunProv, 1);
}
if ( (null != jceProv) && (2 != Security.insertProviderAt(jceProv, 2)) ) {
Security.removeProvider(jceProv.getName());
Security.insertProviderAt(jceProv, 2);
}
if ( (null != jsseProv) && (3 != Security.insertProviderAt(jsseProv, 3)) ) {
Security.removeProvider(jsseProv.getName());
Security.insertProviderAt(jsseProv, 3);
}
// Standardsortierung basierend auf admin/startstd-Eigenschaftendatei anpassen.
// Maximal zulässiger Wert in der Eigenschaftendatei ist 20.
String provName;
Class provClass;
Object provObj = null;
for (int i = 0; i < 21; i++) {
provName = System.getProperty("os400.security.provider."+ i);
if (null != provName) {
try {
provClass = Class.forName(provName);
provObj = provClass.newInstance();
}
catch (Exception ex) {
// provider not found
continue;
}
if (i != Security.insertProviderAt((Provider) provObj, i)) {
// Index 0 am Ende der vorhandenen Liste hinzufügen
if (i != 0) {
Security.removeProvider(((Provider) provObj).getName());
Security.insertProviderAt((Provider) provObj, i);
}
}
} // end if (null != provName)
} // end for (int i = 0; i < 21; i++)
} // end if ("os.name").equals("OS/400")