Sesame
  • Introduction
  • Installation

    • Installation rapide
    • Installation sesame-daemon
    • Installation import Taiga
    • Installation du frontal de gestion du mot de passe
    • Architecture de sécurité
  • Configuration

    • Architecture
    • Principe
    • Validation et description des données
      • Vue d'ensemble
      • Validation des champs InetOrgPerson
        • Les champs servant de clé
        • Champs obligatoires :
        • Champs facultatifs :
      • Validation des champs des schema additionnels
        • Fichiers de Configuration
        • Options
    • Formulaire
    • Configuration de la politique de mot de passe
  • Importation

    • Import des données
    • Configuration de l'import
    • Import depuis taiga
  • Backends

    • Introduction
    • Librairie d'aide Python
    • Backend AD
    • Backend LDAP
  • Utilisation de l'API

    • Les filtres de recherches pour l'API
    • récupération de la photo d'une identité
    • Exemples d'utilisation de l'API Sesame
  • Personalisation de l'UI

    • Personalisation des tuiles de la page d 'accueil'

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é

Last Updated:
Contributors: Alain Abbas
Prev
Principe
Next
Formulaire