Mit dem
SAMLGenerateLoginModule kann ein von der Anwendung generiertes SAML-Token
aus einem Objekt mit gemeinsamem Status (sharedState), das im JAAS-Anmeldemodul der Anwendung initialisiert wird, abgerufen werden.
Das GenericIssuedTokenGenerateLoginModule kann außerdem verwendet werden, um ein
von der Anwendung generiertes SAML-Token aus dem gemeinsamen Status abzurufen. Weitere Informationen finden Sie im Artikel
"SAML-Token mit einem Stack von JAAS-Anmeldemodulen generieren und konsumieren".
Informationen zu diesem Vorgang
Die folgende Vorgehensweise beschreibt die Konfiguration, die zur Verwendung dieser Funktionalität erforderlich ist.
Vorgehensweise
- Speichern Sie das Objekt mit gemeinsamem Status in einer "class"-Variablen in der Initialisierungsmethode des JAAS-Anmeldemoduls.
import com.ibm.websphere.wssecurity.wssapi.token.SecurityToken;
import com.ibm.websphere.wssecurity.wssapi.token.SAMLToken;
import com.ibm.wsspi.wssecurity.core.Constants;
public class myLoginModule implements LoginModule {
...
private Map _sharedState;
...
public void initialize(Subject subject,
CallbackHandle rcallbackHandler,
Map<String, ?> sharedState,
Map<String, ?> options) {
...
this._sharedState = sharedState;
...
}
- Nehmen Sie das von der Anwendung
generierte SAMLToken in das Objekt mit gemeinsamem Status (sharedState) auf. Verwenden Sie dazu eine der folgenden Methoden:
- Erstellen Sie eine
ArrayList mit SecurityToken und nehmen Sie das von der Anwendung
generierte
SAMLToken als einzigen Eintrag in die Liste auf.
Die WS-Security-Laufzeit durchläuft die Liste
in einer Schleife und verwendet nur den ersten Treffer.
- Nehmen Sie das
ArrayList-Objekt mit dem Schlüssel com.ibm.wsspi.wssecurity.core.Constants.WSSECURITY_TOKEN_TO_BE_INSERTED in das
_sharedState-Objekt auf.
com.ibm.wsspi.wssecurity.core.Constants.
WSSECURITY_TOKEN_TO_BE_INSERTED
public boolean login() throws LoginException {
...
SAMLToken mySamlToken=someSAMLToken;
ArrayList<SecurityToken> tokenList =
new ArrayList<SecurityToken>();
tokenList.add(mySamlToken);
_sharedState.put(
Constants.WSSECURITY_TOKEN_TO_BE_INSERTED,
tokenList);
...
}
- Verwenden Sie die Methode
GenericSecurityTokenFactory.putGeneratorTokenToSharedState, um das SAML-Token
in das _sharedState-Objekt aufzunehmen.
import com.ibm.websphere.wssecurity.wssapi.token.GenericSecurityTokenFactory;
public boolean login() throws LoginException {
...
SAMLToken mySamlToken=someSAMLToken;
GenericSecurityTokenFactory factory = GenericSecurityTokenFactory.getInstance();
factory.putGeneratorTokenToSharedState(this._sharedState, mySamlToken);
...
}