Über die API Attribute hinzufügen und vorhandene SAML-Token erneut signieren

Die SAML-Bibliotheks-API kann verwendet werden, um einem nicht verschlüsselten SAML-Token Attribute hinzuzufügen oder Attribute aus dem SAML-Token zu entfernen. Anschließend kann die API verwendet werden, um das SAML-Token zu signieren oder erneut zu signieren. Jedes Mal, wenn Änderungsaktionen für das SAML-Tokenobjekt ausgeführt werden, wird eine vorhandene digitale Signatur des Objekts entfernt.

Informationen zu diesem Vorgang

Die folgende Prozedur beschreibt, wie Sie ein vorhandenes SAMLToken-Objekt ändern und anschließend eine neu digitale Signatur für das Token definieren. Diese Task enthält keine Anweisungen dazu, wie das vorhandene SAMLToken-Objekt abgerufen wird. Das vorhandene SAMLToken-Objekt kann aus einer ankommenden SOAP-Nachricht über den gemeinsamen LoginModule-Status kommen, aus der SAML-Web-SSO über das Basissicherheitsubjekt, aus einem STS, der den Trust-Client verwendet, oder es kann sich um ein selbst ausgestelltes Token handeln, das mit den SAML-APIs erstellt wurde.

Wenn die SAML-APIs Konfigurationsobjekte initialisieren, wird die Konfiguration aus SamlIssuerConfig.properties abgerufen. Sie können die Einstellungen in SamlIssuerConfig.properties verwenden oder diese überschreiben. Diese Prozedur zeigt, wie Sie alle Einstellungen in dieser Datei überschreiben.

Vorgehensweise

  1. Klonen Sie das vorhandene SAML-Token.
    import java.util.ArrayList;
    import org.apache.axiom.om.OMElement;
    import com.ibm.websphere.wssecurity.wssapi.token.SAMLToken;
    import com.ibm.websphere.wssecurity.wssapi.token.SAMLTokenFactory;
    import com.ibm.wsspi.wssecurity.saml.config.ProviderConfig;
    import com.ibm.wsspi.wssecurity.saml.config.RequesterConfig;
    import com.ibm.wsspi.wssecurity.saml.data.SAMLAttribute;
    import com.ibm.wsspi.wssecurity.wssapi.OMStructure;
    ....
    
    //someSAMLToken ist das vorhandene SAMLTokenObjekt
    
    SAMLTokenFactory samlFactory = null;
    
    //Gewünschte SAML-Token-Factory initialisieren
    //samlFactory = SAMLTokenFactory.getInstance(SAMLTokenFactory.WssSamlV11Token11);
    samlFactory = SAMLTokenFactory.getInstance(SAMLTokenFactory.WssSamlV20Token11);
    
    //Vorhandenes SAMLToken-Objekt klonen, falls gewünscht.
    SAMLToken mySamlToken = factory.newSAMLToken(someSamlToken);
  2. Fügen Sie dem Token Attribute hinzu oder entfernen Sie Attribut aus dem Token.
    //Ein einzelnes Attribut hinzufügen
    SAMLAttribute sattribute1 = new SAMLAttribute("Purchases", new String[] {"TooMany"},  null, null, null, null);
    mySamlToken.addAttribute(sattribute1);
    
    //Nach dieser ersten addAttribute-Operation gibt es keine digitale Signatur in der
    //XML der Tokens. Aufgrund der Änderung wurde die Signatur ungültig.
    
    //Liste mit Attributen hinzufügen
    SAMLAttribute sattribute2 = new SAMLAttribute("Address", new String[] {"Austin, Texas"},null,null,"IBM NameFormat","IBM FriendlyName");
    SAMLAttribute sattribute3 = new SAMLAttribute("Membership",new String[] {"Blue team", "Green Team"},null,null,null,null );
    
    ArrayList al = new ArrayList();
    al.add(sattribute2);
    al.add(sattribute3);
    
    mySamlToken.addAttribute(al);
    
    //Attribut löschen
    mySamlToken.deleteAttribute(sattribute3);
    ....
  3. Signieren Sie das SAML-Token erneut.
    RequesterConfig reqData = null;
    
    //Gewünschte Requesterkonfiguration initialisieren
    //reqData = samlFactory.newSenderVouchesTokenGenerateConfig();
    reqData = samlFactory.newBearerTokenGenerateConfig();
    
    //Providerkonfigurationsobjekt mit dem Namen eines Ausstellers initialisieren
    ProviderConfig samlIssuerCfg = samlFactory.newDefaultProviderConfig("myIssuer");
    
    //Alternativ den vorhandenen Aussteller beibehalten, indem die Aussteller-URI auf null gesetzt wird
    //samlIssuerCfg.setIssuerURI(null);
    
    //Keystore-Informationen festlegen, die mit der digitalen Signatur im Providerkonfigurationsobjekt verwendet werden sollen
    KeyStoreConfig ksc = samlFactory.newKeyStoreConfig( "jks", "/myx509.ks", "myx509");
    samlIssuerCfg.setKeyStoreConfig(ksc);
    
    //Schlüsselinformationen festlegen, die mit der digitalen Signatur im Providerkonfigurationsobjekt verwendet werden sollen
    KeyInformationConfig kic = samlFactory.newKeyInformationConfig("mySignAlias", "password", "CN=ME");
    samlIssuerCfg.setKeyInformationConfig(kic);
    
    //Neues SAMLToken-Objekt erstellen, das ein signierter Klon des Eingabetokens ist
    SAMLToken myNewSamlToken = samlFactory.newSAMLToken(mySamlToken,reqData,samlIssuerCfg);
  4. Überprüfen Sie die SAML-Token-XML, um die Änderungen zu sehen.
    //SAML-Zusicherungselement abrufen
    OMElement samlElement = ((OMStructure) myNewSamlToken.getXML()).getNode();
    
    //Element in eine Zeichenfolge umwandeln
    String xmlString = samlElement.toString();

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_addingattributesandresigningexistingSAMLtokens
Dateiname:twbs_addingattributesandresigningexistingSAMLtokens.html