Validation d'Identité
Vue d'ensemble
Le système de validation d'identité utilise des fichiers de configuration YAML pour définir des règles de validation pour différents types d'objets d'identité. Chaque fichier YAML correspond à une objectClass
spécifique et définit les attributs requis et leurs types pour cette classe.
Les fichiers de validation sont situés : ./configs/sesame-orchestrator/validations
Validation des champs InetOrgPerson
Les champs de base de l'objet inetOrgPerson
sont validés par défaut.
Les champs servant de clé
employeeNumber
(Array of strings)employeeType
(string)
Champs obligatoires :
cn
sn
uid
employeeNumber
employeeType
Champs facultatifs :
displayName
facsimileTelephoneNumber
givenName
labeledURI
mail
mobile
postalAddress
preferredLanguage
telephoneNumber
title
userCertificate
userPassword
departmentNumber
Validation des champs des schema additionnels
Fichiers de Configuration
Le fichier de configuration YAML doit être nommé selon le nom de l'objectClass
qu'il définit, par exemple supann.yml
pour l'objectClass
supann
. Il doit être placé dans le dossier TBD
.
Vous pouvez vous baser sur le template si dessous pour créer votre fichier YAML. Les champs $schema, type, properties et required sont obligatoires. Vpis ajouterez le champs désirés dans properties. Pour les champs requis, vous les listerez dans required.
Exemple Générique de Fichier YAML
$schema: "http://json-schema.org/draft-07/schema#"
type: "object"
properties:
[Nom de l'attribut 1] :
description: "[Description de l'attribut]"
type: [Type de l'attribut]
[Autres options]
# plus de détails d'attributs...
required:
- [Nom de l'attribut 1]
- [Nom de l'attribut 2]
# plus d'attributs requis...
Exemple de Fichier YAML (supann.yml
)
Ce fichier définit la structure et les attributs requis pour l'objectClass
supann
.
$schema: "http://json-schema.org/draft-07/schema#"
type: "object"
properties:
supannEmpId:
type: "string"
description: "Employee ID"
supannCivilite:
type: "string"
description: "Title (Mr, Ms, etc.)"
supannBirthName:
type: "string"
description: "Birth name"
supannBirthDate:
type: "string"
format: "date"
description: "Date of birth"
# plus d'attributs...
required:
- "supannEmpId"
- "supannCivilite"
- "supannBirthName"
Options
Chaque attribut peut avoir des options supplémentaires pour définir des règles de validation spécifiques. Les options sont définies en tant que clés dans le fichier YAML.
Array (Tableau)
ensure: Assure que la valeur est toujours un tableau.
type: array ensure: true
compact: Supprime les valeurs vides du tableau.
type: array compact: true
items (of) : Définit le type des éléments du tableau.
type: array items: type: string
maxItems (max) : Définit le nombre maximum d'éléments du tableau.
type: array maxItems: 5
minItems (min) : Définit le nombre minimum d'éléments du tableau.
type: array minItems: 2
uniqueItems : (boolean) les items doivent être unique
Boolean (Booléen)
- Pas de clés spécifiques
type: boolean
Date
- maxDate (max): Définit la date maximum.
type: date maxDate: '2024-01-01'
- minDate (min): Définit la date minimum.
type: date minDate: '2020-01-01'
Number (Nombre)
- integer: Définit que la valeur doit être un entier.
type: number integer: true
- moreThan (exclusiveMinimum): Définit la valeur minimum.
type: number moreThan: 10
- lessThan (exclusiveMaximum): Définit la valeur maximum.
type: number lessThan: 20
- positive: Définit que la valeur doit être positive.
type: number positive: true
- negative: Définit que la valeur doit être négative.
type: number negative: true
- min (minimum): Définit la valeur minimum.
type: number min: 5
- max (maximum): Définit la valeur maximum.
type: number max: 100
- truncate: Tronque la valeur.
type: number truncate: true
- round: Arrondi la valeur.
type: number round: true
String (Chaîne de caractères)
minLength (min): Définit la longueur minimum de la chaîne de caractères.
type: string minLength: 5
maxLength (max): Définit la longueur maximum de la chaîne de caractères.
type: string maxLength: 20
pattern (matches or regex): Définit une expression régulière à respecter.
type: string pattern: '^[a-zA-Z]+$'
format : Définit que la chaîne de caractères doit être un email.
type: string format: 'email'
- date : Date complete au format RFC3339
- duration: Durée RFC3339
- uri: URI complète
- uri-reference: URI compléte ou partielle URI
- email: adresse email
- hostname: Nom de host respectant le RFC1034
- ipv4: adresse ipv4
- ipv6: adresse ipv6
- uuid: Universally Unique IDentifier according to RFC4122.
- number : un nombre entier
Pour plus de details voir : documentation ajv-validator
lowercase: Convertit la chaîne de caractères en minuscule.
type: string lowercase: true
uppercase: Convertit la chaîne de caractères en majuscule.
type: string uppercase: true
trim: Supprime les espaces en début et fin de chaîne de caractères.
type: string trim: true
Exemple
Nous voulons ajouter à nos identités un schema (qui suis un schema LDAP (sogxuser). Ces champs sont pour la messagerie.
Nous allons ajouter 3 champs :
- sogxquota : pour gérer les quotas dans le système de messagerie
- sogxdisableflag : pour désactiver le compte sur le système de messagerie
dans configs/sesame-orchestrator/validations nous creons un fichier sogxuser.yml
$schema: "http://json-schema.org/draft-07/schema#"
type: "object"
properties:
sogxquota:
type: "number"
description: "Quota messagerie"
sogxdisableflag:
type: "number"
description: "Disable/enable"
proxyaddress:
type: "array"
items:
type: string
Voila les champs sogxuser.sogxquota et sogxuser.sogxdisableflag seront disponible dans l'identité