webservices EJBCA======
Consulter également la page sur [[outils:SOAPUI]], décrivant la mise en place de SOAPUI spécifiquement pour EJBCA. Cela est une solution pour tester rapidement un webservices
=====Liste des méthodes=====
^ Méthode ^ Description ^
| [[ws#editUser]] | Création / édition d'une entité. Cela correspond à l'utilisation du lien "Requête de certificat" dans le cas d'une création, et du lien "Gestion entité" (disponible lors d'une recherche) pour une entité déjà existante |
| checkRevocationStatus | |
| [[ws#findUser]] | Permet la recherche d'entité, voir l'exemple |
| [[ws#findCert]] | Récupèrer la liste des certificats d'une entité |
| [[ws#revokeUser]] | Permet de revoquer tous les certificats d'une entité |
| [[ws#revokeCert]] | Permet de revoquer un certificat |
| revokeToken | |
| [[ws#pkcs10Req]] | Émission d'un certificat (en mode décentralisé) à partir d'une requête de certificat (PKCS#10/CSR) |
| [[ws#pkcs12Req]] | Émission d'un certificat (en mode centralisé), la biclé sera générée par EJBCA, correspond à un type de token P12/PEM/JKS |
======Utilisation des méthodes=====
=====editUser=====
====Exemple de requête====
Voici un exemple de message SOAP (généré par SOAPUI) pour créer une entité (ou modifier une entité existante) :
NewUI
ENDUSER
true
bbonfils@linagora.com
EMPTY
true
foo123
false
10
cn=Demo
P12
demo
====Description des paramètres userInfo====
^ Paramètre ^ Description ^
| caName | Nom court de l'AC (liste disponible dans le menu "Edit/Créer AC") |
| certificateProfileName | Nom du profil de certificat (liste disponible dans le menu "Profil de certificats") |
| clearPwd | Booléan (true / false) pour activer le stockage en clair du mot de passe dans la base de donnée, nécessaire pour une utilisation en batch par exemple |
| email | Adresse email du porteur du certificat |
| endEntityProfileName | Nom du profil d'entité |
| keyRecoverable | Booléan (true / false) activant le recouvrement de clé. Ne peut pas être utilisé avec un token du type USERGENERATED |
| password | Mot de passe de l'entité |
| [[ws#Description des statuts|statuts]] | Statut de l'entité (cf [[ws#Description des statuts|tableau]]) |
| subjectDN | DN du porteur du certificat |
| tokenType | Type de token (USERGENERATED, P12, PEM, JKS) |
| username | Nom de l'entité |
=====Description des statuts=====
^ Valeur ^ Nom ^ Description ^
| 10 | **NEW** | L'entité est prête à accueillir un nouveau certificat |
| 11 | **FAILED** | Le certificat de l'entité n'a pu être généré |
| 20 | **INITIALIZED** | |
| 30 | **INPROCESS** | Le certificat est en cours de création |
| 40 | **GENERATED** | Le certificat a été correctement généré |
| 50 | **REVOKED** | L'entité est revoquée |
| 60 | **HISTORICAL** | L'entité est archivée |
| 70 | **KEYRECOVERY** | L'entité est en cours de recouvrement |
L'ensemble des statuts est décris dans le fichier //src/java/org/ejbca/core/model/ra/UserDataConstants.java// des sources d'EJBCA.
=====Description des codes d'erreur=====
Les codes d'erreur suivant peuvent potentiellement être retournés (dans une exception de type EjbcaException) :
^ Code ^ Description ^
| **CA_NOT_EXISTS** | L'entité de certification n'existe pas |
| **EE_PROFILE_NOT_EXISTS** | Le profile d'entité finale n'existe pas |
| **CERT_PROFILE_NOT_EXISTS** | Le profile de certificat n'existe pas |
| **HARD_TOKEN_ISSUER_NOT_EXISTS** | Le pilote du hard token n'existe pas |
| **UNKOWN_TOKEN_TYPE** | Le type de token n'existe pas |
| **INTERNAL_ERROR** | Erreur interne (technique) |
Tous ces codes d'erreurs peuvent être retrouvés dans EJBCA dans la classe ''org.ejbca.core.ErrorCode''
=====findUser=====
Le webservice findUser est l'équivalent webservices de la page listendentities.jsp, il permet de faire une rercherche des entités dans EJBCA.
====Exemple de requête====
1
cat
0
====Description des paramètres====
^ Argument ^ Type ^ Description ^
| matchtype | Entier (de 0 à 2) |Définis la méthode de correspondance utilisé. Il existe 3 valeurs : 0, pour EQUALS, 1 pour BEGINSWITH, 2 pour CONTENTS |
| matchvalue | Chaîne de caractère | Valeur utilisée pour la recherche |
| matchwith | Entier (de 0 à 20) | Correspond au type de champ utilisé pour la recherche (voir tableau suivant pour la liste des valeurs possibles) |
====Description des paramètres matchwith=====
^ Valeur ^ Description ^
| 0 | USERNAME |
| 1 | EMAIL |
| 2 | STATUS |
| 3 | ENDENTITYPROFILE |
| 4 | CERTIFICATEPROFILE |
| 5 | CA |
| 6 | TOKEN |
| 7 | DN |
| 8 | UID |
| 9 | COMMONNAME |
| 10 | DNSERIALNUMBER |
| 11 | GIVENNAME |
| 12 | INITIALS |
| 13 | SURNAME |
| 14 | TITLE |
| 15 | ORGANIZATIONALUNIT |
| 16 | ORGANIZATION |
| 17 | LOCALE |
| 18 | STATE |
| 19 | DOMAINCOMPONENT |
| 20 | COUNTRY |
=====Description des codes d'erreur=====
Les codes d'erreur suivant peuvent potentiellement être retournés (dans une exception de type EjbcaException) :
^ Code ^ Description ^
| **INTERNAL_ERROR** | Erreur interne (technique) |
Tous ces codes d'erreurs peuvent être retrouvés dans EJBCA dans la classe ''org.ejbca.core.ErrorCode''
=====findCerts=====
Cette méthode permet de récupérer l'ensemble des certificats associés à une entité.
====Exemple de requête====
cat00
false
====Description des paramètres====
^ Argument ^ Type ^ Description ^
| arg0 | Chaîne de caractère | Nom de l'entité |
| arg1 | Boolean (true/false) | Si vrai, cette méthode ne retourne que les certificats valides |
=====Description des codes d'erreur=====
Les codes d'erreur suivant peuvent potentiellement être retournés (dans une exception de type EjbcaException) :
^ Code ^ Description ^
| **INTERNAL_ERROR** | Erreur interne (technique) |
Tous ces codes d'erreurs peuvent être retrouvés dans EJBCA dans la classe ''org.ejbca.core.ErrorCode''
=====pkcs10Req=====
Émission d'un certificat (en mode décentralisé) à partir d'une requête de certificat (PKCS#10/CSR).
====Description des paramètres====
^ Argument ^ Type ^ Description ^
| arg0 | Chaîne de caractère | Nom de l'entité |
| arg1 | Chaîne de caractère | Mot de passe de l'entité |
| arg2 | Chaîne de caractère | PKCS10 en base 64 |
| arg3 | Chaîne de caractère | hardTokenSN (peut être null) |
| arg4 | Chaîne de caractère | Type de réponse |
====Description des paramètres type de réponse=====
^ Valeur ^ Description ^
| CERTIFICATE | Un certificat encodé en base 64 |
| PKCS7 | Un PKCS7 encodé en base 64 |
| PKCS7WITHCHAIN | Un PKCS7 avec la chaine de certification complète encodé en base 64 |
=====Description des codes d'erreur=====
Les codes d'erreur suivant peuvent potentiellement être retournés (dans une exception de type EjbcaException) :
^ Code ^ Description ^
| **INVALID_KEY** | La clé fournie est invalide |
| **ILLEGAL_KEY** | La clé fournie est illégale (trop courte ...) |
| **USER_WRONG_STATUS** | L'utilisateur n'est pas dans le bon statut |
| **LOGIN_ERROR** | Erreur de login (user/password) |
| **CA_NOT_EXISTS** | L'authoritée de certification n'existe pas |
| **SIGNATURE_ERROR** | Erreur de signature |
| **INVALID_KEY_SPEC** | Le type de clé spécifié est invalide |
| **BAD_USER_TOKEN_TYPE** | Le type de token utilisateur est invalide |
| **INTERNAL_ERROR** | Erreur interne (technique) |
Tous ces codes d'erreurs peuvent être retrouvés dans EJBCA dans la classe ''org.ejbca.core.ErrorCode''
=====pkcs12Req=====
Émission d'un certificat (en mode centralisé), la biclé sera générée par EJBCA, correspond à un type de token P12/PEM/JKS.
====Description des paramètres====
^ Argument ^ Type ^ Description ^
| arg0 | Chaîne de caractère | Nom de l'entité |
| arg1 | Chaîne de caractère | Mot de passe de l'entité |
| arg2 | Chaîne de caractère | hardTokenSN (peut être null) |
| arg3 | Chaîne de caractère | Spécification de la clé (exemple taille de la clé RSA =>1024, prime192v1 pour ECDSA) |
| arg4 | Chaîne de caractère | Algorythme de chiffrement de la clé (RSA, ECDSA) |
=====Description des codes d'erreur=====
Les codes d'erreur suivant peuvent potentiellement être retournés (dans une exception de type EjbcaException) :
^ Code ^ Description ^
| **CA_NOT_EXISTS** | L'authoritée de certification n'existe pas |
| **ILLEGAL_KEY** | La clé fournie est illégale (trop courte ...) |
| **LOGIN_ERROR** | Erreur de login (user/password) |
| **USER_WRONG_STATUS** | L'utilisateur n'est pas dans le bon statut (pour cette opération) |
| **BAD_USER_TOKEN_TYPE** | Le type de clé spécifié est invalide |
| **INTERNAL_ERROR** | Erreur interne (technique) |
Tous ces codes d'erreurs peuvent être retrouvés dans EJBCA dans la classe ''org.ejbca.core.ErrorCode''
=====revokeUser=====
Permet de revoquer tout les certificat d'une entité EJBCA.
====Description des paramètres====
^ Argument ^ Type ^ Description ^
| arg0 | Chaîne de caractère | Nom de l'entité |
| arg1 | Entier | Raison de la révocation |
| arg2 | Boolean (true/false) | Si vrai, l'entité doit être supprimé a l'issue de la révocation de tous les certificats |
=====Description des codes d'erreur=====
Les codes d'erreur suivant peuvent potentiellement être retournés (dans une exception de type EjbcaException) :
^ Code ^ Description ^
| **INTERNAL_ERROR** | Erreur interne (technique) |
Tous ces codes d'erreurs peuvent être retrouvés dans EJBCA dans la classe ''org.ejbca.core.ErrorCode''
=====revokeCert=====
Permet de revoquer un certificat
====Description des paramètres====
^ Argument ^ Type ^ Description ^
| arg0 | Chaîne de caractère | DN de l'AC |
| arg1 | Chaîne de caractère | SerialNumber du certificat |
| arg2 | Entier | Raison de la révocation |
====Description des paramètres Raison de la révocation=====
^ Valeur ^ Description ^
| -1 | Non révoqué |
| 0 | Non spécifié |
| 1 | Clé compromise |
| 2 | Authorité de certification compromise |
| 3 | Changement d'affiliation |
| 4 | Remplacé |
| 5 | Cessation d'activité |
| 6 | CERTIFICATEHOLD |
| 7 | Non utilisé |
| 8 | REMOVEFROMCRL |
| 9 | PRIVILEGESWITHDRAWN |
| 10 | Authorité d'attribut compromise |
=====Description des codes d'erreur=====
Les codes d'erreur suivant peuvent potentiellement être retournés (dans une exception de type EjbcaException) :
^ Code ^ Description ^
| **CERT_WRONG_STATUS** | Statut de certificat erroné |
| **INTERNAL_ERROR** | Erreur interne (technique) |
Tous ces codes d'erreurs peuvent être retrouvés dans EJBCA dans la classe ''org.ejbca.core.ErrorCode''