El SAMLGenerateLoginModule se puede utilizar para obtener una señal SAML generada por aplicación desde un objeto de estado compartido que se inicializa en el módulo de inicio de sesión JAAS de la aplicación. Además, GenericIssuedTokenGenerateLoginModule también se puede utilizar para obtener una señal SAML generada por la aplicación desde el estado compartido. Para obtener más información, consulte el tema Generación y consumo de señales SAML utilizando módulos de inicio de sesión JAAS apilados.
Acerca de esta tarea
El siguiente procedimiento describe la configuración que se necesita para utilizar esta funcionalidad.
Procedimiento
- Guardar del objeto de estado compartido en una variable de clase en el método initialize del módulo de inicio de sesión JAAS.
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;
...
}
- Coloque la señal SAML generada por la aplicación en el objeto sharedState mediante uno de los métodos siguientes:
- Crear una ArrayList de SecurityToken y colocar la señal SAML generada por la aplicación como la única entrada de esta lista. El tiempo de ejecución de
WS-Security recorrerá la lista en bucle y utilizará sólo la primera coincidencia.
- Colocar el objeto ArrayList en el objeto _sharedState con la clave com.ibm.wsspi.wssecurity.core.Constants.WSSECURITY_TOKEN_TO_BE_INSERTED.
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);
...
}
- Utilice el método GenericSecurityTokenFactory.putGeneratorTokenToSharedState para colocar la señal SAML en el objeto
_sharedState.
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);
...
}