# SalesForce

## Présentation

Salesforce Salesforce Inc. est une entreprise d'infonuagique (cloud). Elle est connue pour ses CRM et applications de réseaux sociaux.

It allows one to use SAML to authenticate users. Il peut utiliser les modes initiés par le SP ou l'IdP.

Cette page présente le mode initié par le SP.

Pour fonctionner avec LL::NG il faut :

- LL::NG configuré comme fournisseur d'identité SAML

## Configuration

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

### Créer le domaine Salesforce

Pour utiliser le mode initié par le SP, il faut créer le domaine salesforce. Cette création prend jusqu'à 1 heure. (au-dessus d'1h, il y a un problème. Ces problèmes sont généralement résolus en moins de 72 heures)

Ensuite deployer ce domaine pour accéder à sa configuration.

Finalement, vérifier que :

- La politique de connexion
- La politique de redirection
- le nom de domaine
- le service d'authentification

correspondent aux bonnes valeurs. (adapter le domaine si nécessaire)

Pour l'instant, le paramètre du service d'authentification ne dispose pas d'un domaine disponible. Il faudra revenir plus tard pour adapter ce paramètre. Une fois que la cinématique SAML fonctionne, mettre le domaine, et supprimer le formulaire de connexion, la redirection se fera alors automatiquement vers le fournisseur d'identité (plus besoin de cliquer pour l'utilisateur). Noter que l'on peut toujours accéder à Salesforce par la page générale de connexion : https://login.salesforce.com

### Paramètres SAML

Salesforce ne peut pas lire les métadatas, il faut les indiquer dans un formulaire.

Aller dans les paramètres SSO de SAML et y indiquer :

- Name : devrait être automatiquement renseigné avec votre domaine
- SAML Version : vérifier que la version 2.0 est utilisée
- Issuer : c'est l'identifiant d'entité de LemonLDAP::NG, qui est par défaut #PORTAL#/saml/metadata
- Identity Provider Certificate: whereas it is mentioned that this is the authentication certificate, you must give your LemonLDAP::NG (IdP) signing certificate. S'il n'en dispose pas, en créer un avec la paire de clef déjà générée (on peut le faire avec openssl). "SSL authentication (https)" ne semble pas devoir être sélectionné.
- Signing Certificate : choisir un certificat pour la signature du SP. (en créer un à défaut)
- Assertion decryption Certificate : choisir un certificat seulement si on veut chiffrer les assertions. (aucun par défaut)
- SAML Identity Type : choisir "Federation ID". Ceci signifie que l'identifiant utilisateur correspondra avec le champ Federation ID. (voir section suivante)
- SAML Identity Location : choisir si l'identifiant utilisateur est maintenu dans le sujet ou dans un autre attribut
- Identity Provider Login URL : l'emplacement du portail utilisateur/mot-de-passe SAML dans l'IdP
- Identity Provider Logout URL : l'URL de déconnexion de l'IdP
- Custom Error URL : on peut rediriger l'utilisateur sur une page particulière en cas d'erreur
- SP Initiated Binding : choisir n'importe quel protocole supporté (ils le sont actuellement tous par LemonLDAP::NG), HTTP POST est un bon choix
- Salesforce Login URL : générée automatiquement. C'est le point d'entrée de la cinématique de connexion.
- OAuth 2.0 Token Endpoint : pas utilisé ici
- API Name : renseigné automatiquement
- User Provisioning Enabled : création automatique des utilisateurs dans Salesforce (pas fonctionnel à l'heure actuelle)
- EntityId : identifiant d'entité Salesforce (le SP). Remplir ce champ en conséquence. Ce devrait être la même valeur que l'URL du domaine indiqué dans la section précédente

### Configurer l'identifiant de fédération

Finalement, configurer pour chaque utilisateur son identifiant de fédération. Ce sera le lien entre l'assertion SAML provenant de LemonLDAP::NG (l'IdP) et l'identifiant Salesforce. Ici, le mail a été choisi comme identifiant utilisateur.

Une fois ceci terminé, cliquer pour exporter les métadatas Salesforce et les importer dans LemonLDAP::NG, dans la déclaration du fournisseur de service Salesforce.

Voir Enregistrer un fournisseur de service dans LemonLDAP::NG.