# Cornerstone On Demand

## Présentation

CornerStone On Demand (CSOD) allows one to use SAML to authenticate users. Il fonctionne par défaut avec un mécanisme initié par l'IDP mais permet un fonctionnement standard initié par le SP.

Pour fonctionner avec LL::NG il faut :

- un compte entreprise
- LL::NG configuré comme fournisseur d'identité SAML
- Enregistrer les utilisateurs dans CSOD avec la même adresse mail que celle utilisée dans LL::NG (l'adresse mail sera le NameID échangé entre CSOD et LL::NG)

## Configuration

### Nouveau fournisseur de service

Il est nécessaire d'avoir configuré LL::NG comme fournisseur d'identité SAML,

Ajouter CSOD comme nouveau fournisseur de service SAML :

1. Dans le manager, cliquer sur fournisseurs de service SAML puis sur le bouton `Nouveau fournisseur de service`.
2. Mettre csod comme nom de fournisseur de service.
3. Mettre `Email` dans `Options` » `Réponse d'authentification` » `Format NameID par défaut`
4. Selectionner `Metadata`, et déprotéger le champ pour y mettre :

    <md:EntityDescriptor entityID="mycompanyid.csod.com" xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
      <SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
        <KeyDescriptor use="signing">
          <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    	 <ds:X509Data>
    	  <ds:X509Certificate>
    Base64 encoded CSOD certificate
    	    </ds:X509Certificate>
    	  </ds:X509Data>
          </ds:KeyInfo>
        </KeyDescriptor>
        <AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://mycompanyid.csod.com/samldefault.aspx" index="1" />
        <NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</NameIDFormat>
      </SPSSODescriptor>
    </md:EntityDescriptor>

Changer mycompanyid (dans `AssertionConsumerService` markup, parameter `Location`) avec l'ID CSOD de l'entreprise et mettre la valeur du certificat dans ds:X509Certificate markup

### Panneau de configuration CSOD

CSOD nécessite 2 éléments pour configurer LL::NG comme IDP :

- Certificat
- Assertion SAML

#### Certificat

Voir les paramètres de sécurité SAML pour générer un certificat avec une clef privée SAML.

#### Assertion SAML

Il faut utiliser la fonctionnalité initiée par l'IDP de LL::NG. Lancer simplement cette URL:

    https://auth.example.com/saml/singleSignOn?IDPInitiated=1&sp=mycompanyid.csod.com