Extension de services Upstream Application Login (existante)

Extension de services Upstream Application Login (existante)

ℹ️
Cette rubrique fait référence à la syntaxe de configuration existante. Les passerelles d’applications sont désormais définies comme des applications Proxy.

Il peut être utile de déterminer si une requête adressée à une application en amont est authentifiée et de pouvoir se connecter à une application en amont. Ces situations sont fréquentes lorsqu’une application gère ses propres sessions ou s’authentifie directement auprès d’un magasin de données comme LDAP ou une base de données relationnelle.

Remarque : les extensions de services IsLoggedIn et Login doivent pratiquement toujours être utilisées ensemble.

IsLoggedIn

Cette extension de services peut être utilisée pour déterminer si une demande adressée à une application en amont est authentifiée. L’extension est appelée juste avant que l’orchestrateur ne procède à la proxification vers l’application en amont. La détermination de l’état d’authentification peut être complexe, mais la présence d’un cookie ou d’une requête vers un chemin donné peut être utilisée pour faire des déductions.

appgateways:
  - name: example
    # ...

    isLoggedInSE:
      funcName: IsLoggedIn
      file: /etc/maverics/extensions/upstreamLogin.go

/etc/maverics/extensions/upstreamLogin.go

package main

import (
	"net/http"

	"maverics/app"
	"maverics/log"
)

func IsLoggedIn(
	ag *app.AppGateway,
	rw http.ResponseWriter,
	req *http.Request,
) bool {
	log.Debug("msg", "determining if upstream application is authenticated")
	return false
}

Login

Cette extension de services peut être utilisée pour se connecter à une application en amont. L’extension est appelée juste avant que l’orchestrateur ne procède à la proxification vers l’application en amont, si une authentification est requise. La méthode de connexion varie selon l’application, mais les techniques courantes comprennent la soumission d’un formulaire ou la génération d’un cookie de session.

appgateways:
  - name: example
    # ...

    loginSE:
      funcName: Login
      file: /etc/maverics/extensions/upstreamLogin.go

/etc/maverics/extensions/upstreamLogin.go

package main

import (
	"net/http"

	"maverics/app"
	"maverics/log"
)

func Login(
	ag *app.AppGateway,
	rw http.ResponseWriter,
	req *http.Request,
) error {
	log.Debug("msg", "authenticating against upstream application")
	return nil
}