Notes de version de la mise à jour 2 de OpenSSO d'Oracle

Prise en charge de la signature et du chiffrement par le Fedlet Java

Le Fedlet Java prend en charge la vérification des signatures XML et le déchiffrement des éléments chiffrés assertion et NameID ainsi que leurs attributs correspondants.

ProcedurePour configurer le Fedlet Java pour la signature et le chiffrement

  1. Créez un fichier keystore nommé keystore.jks à l'aide de l'utilitaire keytool.

  2. Ajoutez la clé privée (et le certificat public le cas échéant) utilisée pour la signature et la clé privée (et le certificat public le cas échéant) utilisée pour le chiffrement dans le fichier keystore.jks.

  3. Créez un fichier .storepass.

  4. Ajoutez le mot de passe au fichier .storepass. Pour chiffrer le mot de passe, utilisez fedletEncode.jsp.

  5. Créez un fichier .keypass.

  6. Ajoutez le mot de passe au fichier .keypass. Pour chiffrer le mot de passe, utilisez fedletEncode.jsp.

  7. Si vous utilisez des mots de passe en texte clair, commentez la ligne suivante dans le fichier FederationConfig.properties :

    com.sun.identity.saml.xmlsig.passwordDecoder=
        com.sun.identity.fedlet.FedletEncodeDecode
  8. Paramétrez le chemin d'accès complet pour les attributs suivants dans le fichier FederationConfig.properties , où path correspond au chemin d'accès complet vers le fichier respectif :

    com.sun.identity.saml.xmlsig.keystore=path/keystore.jks
    com.sun.identity.saml.xmlsig.storepass=path/.storepass
    com.sun.identity.saml.xmlsig.keypass=path/.keypass
  9. Utilisez keytool pour exporter le certificat de signature. Par exemple :

    keytool -export -keystore keystore.jks -rfc -alias test

    L'outil vous invite à saisir le mot de passe utilisé pour accéder à keystore.jks , puis génère le certificat.

  10. Si vous avez besoin d'un certificat de chiffrement, utilisez keytool pour l'exporter, tel qu'indiqué dans l'étape précédente. (Ou utilisez le même certificat pour la signature et le chiffrement.)

  11. Créez un bloc XML KeyDescriptor et ajoutez-y le certificat de chiffrement. Par exemple, notez la balise use="signing" de l'élément KeyDescriptor :

    <KeyDescriptor use="signing">
          <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
            <ds:X509Data>
              <ds:X509Certificate>
    MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
    bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w
    ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw
    CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK
    BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B
    AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+
    RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY
    Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U
    QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA
    cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC
    /FfwWigmrW0Y0Q==
              </ds:X509Certificate>
            </ds:X509Data>
          </ds:KeyInfo>
    </KeyDescriptor>
  12. Créez un autre bloc XML KeyDescriptor et ajoutez-y le certificat de chiffrement. Par exemple, notez la balise use="encryption" de l'élément KeyDescriptor :

    <KeyDescriptor use="encryption">
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <X509Data>
              <X509Certificate>
    MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
    bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w
    ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw
    CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK
    BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B
    AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+
    RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY
    Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U
    QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA
    cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC
    /FfwWigmrW0Y0Q==
              </X509Certificate>
            </X509Data>
          </KeyInfo>
    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc">
      <KeySize xmlns="http://www.w3.org/2001/04/xmlenc#">128</KeySize>
    </EncryptionMethod>
    </KeyDescriptor>
  13. Dans le fichier sp.xml du Fedlet Java, ajoutez les blocs XML avec les certificats de signature et de chiffrement sous l'élément SPSSODescriptor . Pour obtenir un échantillon de l'élément SPSSODescriptor, consultez l'Exemple 4–1.

    L'attribut AuthnRequestsSigned est paramétré à true, configurant ainsi le Fedlet Java pour qu'il signe toutes les requêtes d'authentification.

  14. Dans le fichier sp-extended.xml du Fedlet Java, paramétrez les valeurs pour les documents suivants :

    • signingCertAlias contient l'alias du certificat de signature XML dans le keystore.

    • encryptionCertAlias contient l'alias du certificat de chiffrement XML dans le keystore.

  15. Pour appliquer ce que le fournisseur de services du Fedlet Java chiffre, paramétrez les attributs suivants dans le fichier sp-extended.xml à true:

    • wantAssertionEncrypted

    • wantNameIDEncrypted

    • wantAttributeEncrypted

  16. Pour appliquer ce que le fournisseur de services du Fedlet Java signe et veut voir signé, paramétrez les attributs suivants à true:

    • wantAuthnRequestsSigned dans le fichier idp.xml indique au Fedlet quoi signer.

    • AuthnRequestsSigned et WantAssertionsSigned dans le fichier sp.xml indique au fournisseur d'identités ce que le Fedlet prévoit de signer.

    • wantArtifactResponseSigned dans le fichier sp-extended.xml indique au Fedlet quoi signer.

    • wantPOSTResponseSigned dans le fichier sp-extended.xml

    • wantLogoutRequestSigned dans le fichier sp-extended.xml

    • wantLogoutResponseSigned dans le fichier sp-extended.xml

    Si le fournisseur d'identités a besoin d'une signature pour des messages particuliers, paramétrez les attributs respectifs à true dans le fichier idp-extended.xml . Par exemple, wantLogoutRequestSigned et wantLogoutResponseSigned.


    Remarque –

    Si vous paramétrez des attributs dans le fichier sp-extended.xml, transmettez ces informations à l'administrateur du fournisseur d'identités, de façon à ce que les modifications nécessaires de configuration puissent être apportées dans le fournisseur d'identités.


  17. Redémarrez le conteneur Web du Fedlet Java.

  18. Importez le fichier sp.xml du Fedlet Java dans le fournisseur d'identités.


Exemple 4–1 Exemple d'élément SPSSODescriptor du Fedlet Java

<EntityDescriptor entityID="fedlet"
xmlns="urn:oasis:names:tc:SAML:2.0:metadata">

<SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="false"
protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<b><KeyDescriptor use="signing">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>
MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w
ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK
BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B
AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+
RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY
Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U
QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA
cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC
/FfwWigmrW0Y0Q==
          </ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>

</KeyDescriptor></b>
<b><KeyDescriptor use="encryption">
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <X509Data>
          <X509Certificate>
MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w
ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK
BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B
AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+
RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY
Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U
QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA
cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC
/FfwWigmrW0Y0Q==
          </X509Certificate>
        </X509Data>
      </KeyInfo>

<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc">
<KeySize xmlns="http://www.w3.org/2001/04/xmlenc#">128</KeySize>
</EncryptionMethod>
</KeyDescriptor></b>
<NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat
><AssertionConsumerService index="1"
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="http://server.sun.com:7070/fedlet/fedletapplication"/>
</SPSSODescriptor>
</EntityDescriptor>