Commit 8a1fd951 authored by Herve Marie's avatar Herve Marie
Browse files

Modifications .gitignore pour les certificats, mise à jour documentation,...

Modifications .gitignore pour les certificats, mise à jour documentation, modif command pour homogénisation
parent d7f86fa7
Loading
Loading
Loading
Loading
Loading
+1 −0
Changes for .gitignore: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ doc/*.html
# Connecteurs
/config/connectors/*.yml
!/config/connector/*.yml.dist
/config/connectors/*.pem
socket/config.json

# Documentation
+52 −2
Changes for doc/connectors.md: 52 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -9,10 +9,13 @@ Il propose des utilitaires en ligne de commande pour **importer des données** d

Les connectors permettent de *brancher* Oscar sur des sources de données et d'automatiser la maintenance de ces données.

Les connectors dans version 2.0 de Oscar s'appuient sur un service REST distant qui va livrer les données à Oscar sous un format standardisé.
Les connectors dans version 2.0 d'Oscar s'appuient sur un service REST distant qui va livrer les données à Oscar sous un format standardisé.

Il est possible de développer ces propres services si les informations sont réparties de façon plus spécifique dans le SI.
Oscar possède la possibilité de se connecter via une connexion ssl en relation avec un certificat .p12 avec mdp, il faudra cependant le préparer en le scindant en deux fichiers (certificat et clef)

Une note pour scinder ce type de certificat sous environnement linux via openssl est expliqué plus bas dans ce chapitre dans la section dédiée aux développeurs.

Il est possible de développer ces propres services si les informations sont réparties de façon plus spécifique dans le SI.


## Connector PERSONS
@@ -70,6 +73,27 @@ url_persons: 'https://rest.service.tdl/api/persons'
url_person: 'https://rest.service.tld/api/person/%s'
```

Dans le cadre d'une connexion vers une api avec certificat il faudra compléter les éléments suivants avec vos informations

Ajouter et, ou compléter la clef acces_strategy avec le path vers la class dédié à la connexion avec certificat

Compléter les path(s) vers vos fichiers :certificat et clef de certificat, ainsi que le mot de pass pour ces éléments

```yml
# Emplacement du service REST fournissant la liste des personnes
# ...
# ...
# Accès spécifique
access_strategy:  Oscar\Connector\Access\ConnectorAccessCurlCertificat
# Clef certificat .pem
file_certificat_ssl_key: config/connectors/key.pem
# Client certificat .pem
file_certificat_cert: config/connectors/client.pem
# Pass certificat .pem
file_certificat_pass: VOTREPASSCERTIFICAT
```


Les URL correspondent à l'API REST qui devra retourner un JSON standard, pour la liste un tableau d'objet, pour l'accès unitaire un objet simple sous la forme :

**Remarque** : Depuis la version *2.7 "Lewis"*, Oscar accepte un objet contenant une clef `persons` contenant le tableau d'objet afin de simplifier sa synchronisation avec les outils tel que **Talend ESB**.
@@ -372,6 +396,32 @@ url_persons: 'https://rest.service.tdl/api/persons'
url_person: 'https://rest.service.tld/api/person/%s'
```

#### Connection avec certificat

Cette connexion a été développée en suivant la procédure ci-dessous section Connector Acces

Pour rappel vous devez disposer des deux fichiers correspondant au traitement d'un certificat généré .p12 et scinder via un outil tel que openssl (commande ci-dessous sous environnement linux).

````
openssl pkcs12 -in nomDeVotreCertificat.p12 -out client.pem -clcerts -nokeys 
openssl pkcs12 -in nomDeVotreCertificat.p12 -out key.pem -nocerts
````

Le mot de pass de votre certificat vous sera demandé, ce mot de pass correspond à celui que vous devez remplir dans le fichier de config (voir début de page de documentation)

Il est possible de tester votre connecteur avec certificat en utilisant la commande dédiée :

Pour soumettre à une api en rest en utilisant un paramètre UID pour exemple.

``
php bin/oscar.php dev:commandtestsslsyncpersons rest https://referentiel-xx-xx.domaine.fr/api_oscarxxxx/person votreUIDpourexemple
``

Le paramètre UID est en option, pour exemple vous pouvez récupérer une collection selon api

 ``
 php bin/oscar.php dev:commandtestsslsyncpersons rest https://referentiel-xx-xx.domaine.fr/api_oscarxxxxx/persons
``

#### Connector Access

+6 −6
Changes for module/Oscar/src/Oscar/Command/OscarTestSyncPersonsSslCommand.php: 6 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -28,10 +28,10 @@ class OscarTestSyncPersonsSslCommand extends OscarCommandAbstract
        $this
            ->setDescription("Permet de tester l'appel curl ssl syncPersons OSCAR")
            ->setHelp("Permet de tester le retour du connector ssl syncPersons en passant le nom du connecteur (rest) en argument 1,
            l'url de base api en argument 2, et un argument 3 optionnel eppn dans le cadre d'une url avec un appel api sur un seul enregistement")
            l'url de base api en argument 2, et un argument 3 optionnel UID dans le cadre d'une url avec un appel api sur un seul enregistrement")
            ->addArgument("connectorname", InputArgument::REQUIRED, "Connector (restssl)")
            ->addArgument('baseUrl', InputArgument::REQUIRED, "L'argument baseUrl est requis")
            ->addArgument('eppn', InputArgument::OPTIONAL, "L'argument eppn est falcutatif")
            ->addArgument('UID', InputArgument::OPTIONAL, "L'argument UID est falcutatif")

        ;
    }
@@ -48,17 +48,17 @@ class OscarTestSyncPersonsSslCommand extends OscarCommandAbstract
        $connector = $connectorService->getConnector("person.".$connectorName);
        //Get de l'url de base
        $urlArgument = $input->getArgument('baseUrl');
        //Get optionnal argument eppn
        $eppnArgument = (is_null($input->getArgument('eppn')))?"":"/".$input->getArgument('eppn');
        //Get optionnal argument UID
        $uidArgument = (is_null($input->getArgument('UID')))?"":"/".$input->getArgument('UID');

        $io = new SymfonyStyle($input, $output);
        $io->title("TEST APPEL CURLSSLGUZZLE SYNC PERSONS");
        $io->section("Connector infos : ");
        $io->writeln("Connecteur : $connectorName");

        $getApiRequest = new ConnectorAccessCurlCertificat($connector, ['url'=>$urlArgument.$eppnArgument]);
        $getApiRequest = new ConnectorAccessCurlCertificat($connector, ['url'=>$urlArgument.$uidArgument]);
        $results = $getApiRequest->getDatas();
        if ($eppnArgument != ""){
        if ($uidArgument != ""){
            dump($results);
        }else{
            var_dump($results);