Extension de services Upstream Application Login (existante)
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
etLogin
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
}