Authentification pour un logiciel mono-utilisateur

Prérequis

On suppose que le professionnel de santé posséde un compte sur le site MesVaccins.net.

Trois éléments d’identification

Pour chaque requête envoyée à l’API, MesVaccins.net valide les trois éléments d’identification suivants :

1. Le logiciel métier à l'origine de la requête ;
2. L'identité du professionnel de santé ;
3. Une session de connexion.

À chacun des trois éléments d’identification correspondent des données d’authentification correspondante. Ces données doivent être incluses dans toutes les requêtes envoyées à l’API.

1. Authentification du logiciel métier

Chaque application connectée à l’API MesVaccins.net doit disposer d’une clef d’accès (uid) et d’un mot de passe (secret). Ce couple clef/mot de passe est généré manuellement pour l’application par l’équipe MesVaccins.net.

Ces clefs sont transmises avec les requêtes en utilisant la méthode d’authentification HTTP Basic : le login est la clef assignée à l’application, et le mot de passe est son mot de passe associé.

2. Authentification du professionnel de santé

Ce paragraphe concerne l'authentification sur le serveur avec authentification par certificat. Pour la documentation de l'authentification du professionnel de santé sur le serveur sans authentification forte, se référer au paragraphe Authentification du professionnel de santé sans certificat.

Pour des raisons de traçabilité des actes médicaux, toute requête envoyée au serveur doit être portée par un professionnel de santé, identifié comme tel par notre serveur (ceci implique que le professionnel de santé possède un compte de professionnel de santé sur le site pro.mesvaccins.net).

Cette identification est effectuée par un certificat. Deux solutions techniques sont disponibles pour l’obtention de ce certificat :

  • utiliser le certificat exhibé par la carte CPS du professionnel de santé (si disponible) ;
  • utiliser un certificat X.509. La récupération de ce certificat par le logiciel client nécessite de disposer d’un “code de retrait de certificat”, délivré pour le professionnel par l’équipe de MesVaccins.net sur preuve documentaire de sa qualité de professionnel de santé.

Obtention du certificat à partir du code de retrait de certificat

Adresse du webservice pour l'environnement de test
https://certtest.idshost.fr
Adresse du webservice pour l'environnement de production
https://cert.idshost.fr
Une fois obtenu, le certificat doit être stocké dans le logiciel métier, pour pouvoir être proposé avec chaque requête envoyée vers MesVaccins.net.
Le code de retrait n'est utilisable qu'une fois.
  • POST [URL DU WEBSERVICE]/restgetcertificate.php récupére le certificat au format base64 à partir d'un code de retrait de certificat
{
    "identifier": "none",
    "otp": "...",
    "type": "p12"
}
  • Le champ identifier doit contenir la valeur none
  • Le champ otp contient le code de retrait de certificat
  • Le champ type contient le type de certificat ; les types disponibles sont pem et p12 (format PKCS12). Si possible, on utilisera le type p12, dont le mot de passe associé à la clé privée est l’OTP précédemment mentionné.

Le format de la réponse renvoyée est :

{
    "status": 0,
    "certbase64encoded": "..."
}

status est le code de retour de l’opération (cf. tableau ci-dessous), et certbase64encoded est le certificat X.509 encodé au format base64.

Statut Description
0 Opération réussie
1 Requête mal formée – le contenu de la requête JSON est invalide
2 Type incorrect – les types valides sont pem et p12
3 OTP incorrect – le code de retrait est invalide ou a déjà été utilisé
4 Erreur serveur, contactez nous à developers@mesvaccins.net

Présentation du certificat

Le certificat doit être envoyé avec chaque requête, sous forme décodée.

3. Gestion de la session de connexion

Le serveur de test contient un compte professionnel exemple dont voici les données :
  • E-mail : pierre.borsan@gmail.com
  • Mot de passe : 4mzZipL9RzGP

Tout professionnel de santé utilisant MesVaccins.net doit être connecté en utilisant un compte individuel. Ceci est imposé par les contraintes de traçabilité des actions relatives aux données médicales à caractére personnel.

L’identification du professionnel pour les requêtes à MesVaccins.net est effectué par l’envoi de d’un identifiant de session de connexion avec les requêtes.

L’identifiant de session est envoyé avec les requêtes dans un cookie nommé sessionids.

Adresse du webservice pour l'environnement de test
https://test-pro-secure.mesvaccins.net/authenticationids
Adresse du webservice pour l'environnement de production
https://pro-secure.mesvaccins.net/authenticationids
  • POST [URL DU WEBSERVICE]/restloginservice.php initie (ou réinitie) la session avec le serveur
{
    "authentifier": "pierre.borsan@gmail.com",
    "password": "..."
}
  • Le champ authentifier contient l'e-mail du professionnel de santé
  • Le champ password contient le mot de passe associé au professionnel de santé

Format de la réponse

{
    "status": 0,
    "sessionids": "..."
}

status est le code de retour de l’opération (cf. tableau ci-dessous), et sessionids est l’identifiant de session.

Statut Description
0 Connexion réussie
1 Requête mal formée
2 Certificat non accepté
3 Identifiant manquant (mot de passe et/ou authentifiant)
4 Certificat en blacklist
La blackliste survient suite à 3 échecs de connexion et dure 15 minutes.
5 Identifiants invalides
  • POST [URL DU WEBSERVICE]/restisloggedservice.php vérifie si la session est toujours active
{
    "sessionids": "...",
}

Le format de la réponse renvoyée est :

{
    "status": 0
}

status est l’un des codes de réponse suivants :

Statut Description
0 Utilisateur connecté
1 Requête mal formée
2 Session non valide
  • POST [URL DU WEBSERVICE]/restlogoffservice.php déconnecte la session
{
    "sessionids": "...",
}

Le format de la réponse renvoyée est :

{
    "status": 0
}

status est l’un des codes de réponse suivants :

Statut Description
0 Déconnexion réussie
1 Requête mal formée
2 Session non valide