Extensions de services (existantes)

ℹ️
Cette rubrique fait référence à la syntaxe de l’extension de services existante. Pour la syntaxe actuelle de l’extension de services, reportez-vous à la section Extensions de services.

L’intégration des systèmes d’accès nécessite des possibilités de configuration extrêmement étendues. Les extensions de services donnent aux administrateurs la possibilité de personnaliser le comportement de l’orchestrateur Maverics en fonction des besoins spécifiques de leur intégration.

ℹ️
Nous recommandons de ne pas partager les cookies de session de Maverics avec des applications en amont, car cela a des répercussions sur la sécurité et peut entraîner un détournement de session ou une usurpation d’identité.

Comment définir une extension de services

Définition d’une extension de services dans la configuration

Il est possible de configurer complètement une extension de services dans un fichier de configuration, en plaçant simplement la définition de la fonction en ligne.

Voici un exemple de chargement d’un attribut simple en ligne via loadAttrsSE.

appgateways:
  - name: Sonar
    basePath: /
    upstream: https://app.sonarsystems.com:8443
    tls: sonar-app

    policies:
    - location: /
      loadAttrsSE:
        funcName: LoadAttrs
        code: |+
          import (
            "maverics/app"
            "maverics/session"

            "net/http"
            "time"
          )

          func LoadAttrs(ag *app.AppGateway, rw http.ResponseWriter, req *http.Request) error {
            session.Set(req, "loginTime", time.Now().String())
            return nil
          }          

Définition des extensions de services dans des fichiers distincts

Une extension de services peut également être définie dans un fichier distinct qui est simplement référencé dans le fichier de configuration.

appgateways:
  - name: Sonar
    basePath: /
    upstream: https://app.sonarsystems.com:8443
    tls: sonar-app

    policies:
    - location: /
      loadAttrsSE:
        funcName: LoadAttrs
        file: /etc/maverics/LoadAttributes.go

Avec le fichier séparé LoadAttributes.go contenant :

package main

import (
  "maverics/app"
  "maverics/session"

  "net/http"
  "time"
)

func LoadAttrs(ag *app.AppGateway, rw http.ResponseWriter, req *http.Request) error {
  session.Set(req, "loginTime", time.Now().String())
  return nil
}

Points d’extension de services

Vous pouvez personnaliser l’expérience en matière d’identité dans les points d’extension de services suivants :

Paquets supplémentaires de Maverics

Maverics comprend également un certain nombre de paquets qui peuvent être utilisés dans les extensions de services pour faciliter le chargement des attributs, la connexion, le retour des résultats des décisions de politique, l’obtention des attributs de session, la fourniture d’attributs, la journalisation et le chargement des secrets.

Pour plus de détails, reportez-vous à la section Paquets de Maverics .

Exemples

Des exemples supplémentaires d’extension de services sont disponibles sur strata-io/strata-service-extension-examples.

Idiomes

Fonctions exportées

Lors de la définition d’une extension de services, le nom de la fonction doit être écrit en majuscules afin d’indiquer que la fonction est exportée et qu’elle sera le point d’entrée appelé par le moteur d’exécution de l’orchestrateur. La mise en majuscule des noms d’extension permet de différencier l’API publique de l’extension de services des utilitaires internes.

Effective Go

Le langage Go définit un large éventail d’idiomes pour l’écriture Effective Go. Les extensions de services devraient généralement se conformer à ces idiomes afin de respecter les bonnes pratiques.

Explorer

Documentation

Pour plus d’informations, rendez-vous sur Hextra.