Gluu – Bien choisir son serveur d impression
Author: Titanfall —
Short summary: # Vous trouverez ci-dessous un script d'authentification utilisé par le serveur Gluu pour implémenter Duo Security pour une authentification à deux facteurs (2FA). depuis org.xdi.service.cdi.util, importez CdiUtil depuis org.xdi.oxauth.security import Identity depuis org.xdi.model.custom.script.type.auth, importez PersonAuthenticationType depuis org.xdi.oxauth.service import UserService, AuthenticationService depuis org.xdi.service, importez MailService depuis org.xdi.util, importez ArrayHelper depuis org.xdi.util import StringHelper import duo_web importer […]
Quick overview
- Site
- Tutos GameServer
- Canonical URL
- https://tutos-gameserver.fr/2019/05/04/gluu-bien-choisir-son-serveur-d-impression/
- LLM HTML version
- https://tutos-gameserver.fr/2019/05/04/gluu-bien-choisir-son-serveur-d-impression/llm
- LLM JSON version
- https://tutos-gameserver.fr/2019/05/04/gluu-bien-choisir-son-serveur-d-impression/llm.json
- Manifest
- https://tutos-gameserver.fr/llm-endpoints-manifest.json
- Estimated reading time
- 6 minutes (311 seconds)
- Word count
- 1034
Key points
- # Vous trouverez ci-dessous un script d'authentification utilisé par le serveur Gluu pour implémenter Duo Security pour une authentification à deux facteurs (2FA).
- depuis org.xdi.service.cdi.util, importez CdiUtil depuis org.xdi.oxauth.security import Identity depuis org.xdi.model.custom.script.type.auth, importez PersonAuthenticationType depuis org.xdi.oxauth.service import UserService, AuthenticationService depuis org.xdi.service, importez MailService depuis org.xdi.util, importez ArrayHelper depuis org.xdi.util import StringHelper import duo_web importer json classe PersonAuthentication (PersonAuthenticationType): def __init __ (self, currentTimeMillis): self.currentTimeMillis = currentTimeMillis def init (self, configurationAttributes): print "Duo.
- Initialization" duo_creds_file = configurationAttributes.get ("duo_creds_file").
- getValue2 () # Charger les informations d'identification du fichier f = open (duo_creds_file, 'r') essayer: creds = json.loads (f.read ()) sauf: print "Duo.
Structured content
# Vous trouverez ci-dessous un script d'authentification utilisé par le serveur Gluu pour implémenter Duo Security pour une authentification à deux facteurs (2FA).
depuis org.xdi.service.cdi.util, importez CdiUtil depuis org.xdi.oxauth.security import Identity depuis org.xdi.model.custom.script.type.auth, importez PersonAuthenticationType depuis org.xdi.oxauth.service import UserService, AuthenticationService depuis org.xdi.service, importez MailService depuis org.xdi.util, importez ArrayHelper depuis org.xdi.util import StringHelper
import duo_web importer json
classe PersonAuthentication (PersonAuthenticationType): def __init __ (self, currentTimeMillis): self.currentTimeMillis = currentTimeMillis
def init (self, configurationAttributes): print "Duo. Initialization"
duo_creds_file = configurationAttributes.get ("duo_creds_file"). getValue2 () # Charger les informations d'identification du fichier f = open (duo_creds_file, 'r') essayer: creds = json.loads (f.read ()) sauf: print "Duo. Initialization. Impossible de charger les créations à partir du fichier:", duo_creds_file retourne Faux enfin: f.close ()
self.ikey = str (creds["ikey"]) self.skey = str (creds["skey"]) self.akey = str (creds["akey"])
self.use_duo_group = False if (configurationAttributes.containsKey ("groupe_duo")): self.duo_group = configurationAttributes.get ("duo_group"). getValue2 () self.use_duo_group = True print "Duo. Initialization. Utiliser Duo uniquement si l'utilisateur appartient au groupe:", self.duo_group
self.use_audit_group = False if (configurationAttributes.containsKey ("groupe_audits")): self.audit_group = configurationAttributes.get ("audit_group"). getValue2 ()
if (pas configurationAttributes.containsKey ("audit_group_email")): print "Duo. Initialization. La propriété audit_group_email n'est pas spécifiée" retourne Faux
self.audit_email = configurationAttributes.get ("audit_group_email"). getValue2 () self.use_audit_group = True
print "Duo. Initialization. Utilisation de audito group:", self.audit_group if (self.use_duo_group ou self.use_audit_group): if (pas configurationAttributes.containsKey ("audit_attribute")): print "Duo. Initialization. La propriété audit_attribute n'est pas spécifiée" retourne Faux autre: self.audit_attribute = configurationAttributes.get ("audit_attribute"). getValue2 ()
print "Duo. Initialisé avec succès" retourne True
def destroy (self, configurationAttributes): print "Duo. Destroy" print "Duo. Détruit avec succès" retourne True
def getApiVersion (auto): retour 1
def isValidAuthenticationMethod (self, usageType, configurationAttributes): retourne True
def getAlternativeAuthenticationMethod (self, usageType, configurationAttributes): retourner Aucun
def authenticate (self, configurationAttributes, requestParameters, step): duo_host = configurationAttributes.get ("duo_host"). getValue2 ()
authenticationService = CdiUtil.bean (AuthenticationService)
identity = CdiUtil.bean (Identity)
si (étape == 1): print "Duo. Authentifiez-vous pour l'étape 1"
credentials = identity.getCredentials () nom_utilisateur = credentials.getUsername () mot_de_passe_utilisateur = credentials.getPassword ()
logs_in = Faux if (StringHelper.isNotEmptyString (nom_utilisateur) et StringHelper.isNotEmptyString (mot_utilisateur_utilisateur)): userService = CdiUtil.bean (UserService) log_in = authenticationService.authenticate (nom d'utilisateur, mot de passe utilisateur)
si (non connecté): retourne Faux
utilisateur = authenticationService.getAuthenticatedUser () si (self.use_duo_group): print "Duo. Authentifiez-vous à l'étape 1. Vérification de l'appartenance de l'utilisateur au groupe Duo" is_member_duo_group = self.isUserMemberOfGroup (utilisateur, self.audit_attribute, self.duo_group) if (is_member_duo_group): print "Duo. Authentifiez-vous à l'étape 1. Utilisateur '" + utilisateur.getUserId () + "' membre du groupe Duo" duo_count_login_steps = 2 autre: self.processAuditGroup (utilisateur) duo_count_login_steps = 1
identity.setWorkingParameter ("duo_count_login_steps", duo_count_login_steps)
retourne True elif (step == 2): print "Duo. Authentifiez-vous à l'étape 2" utilisateur = authenticationService.getAuthenticatedUser () si utilisateur == Aucun: print "Duo. Authentifiez-vous à l'étape 2. Echec de la détermination du nom d'utilisateur" retourne Faux
nom_utilisateur = utilisateur.getUserId ()
sig_response_array = requestParameters.get ("sig_response") si ArrayHelper.isEmpty (sig_response_array): print "Duo. Authentifiez-vous à l'étape 2. sig_response est vide" retourne Faux
duo_sig_response = sig_response_array[0]
print "Duo. Authentifiez-vous à l'étape 2. duo_sig_response:" + duo_sig_response
nom_utilisateur_authentifié = duo_web.verify_response (self.ikey, self.skey, self.akey, duo_sig_response)
print "Duo. Authentifiez-vous à l'étape 2. nom d'utilisateur authentifié:" + nom d'utilisateur authentifié + ", nom d'utilisateur attendu:" + nom d'utilisateur
if (non StringHelper.equals (nom d'utilisateur, nom d'utilisateur authentifié)): retourne Faux
self.processAuditGroup (utilisateur)
retourne True autre: retourne Faux
def prepareForStep (self, configurationAttributes, requestParameters, step): identity = CdiUtil.bean (Identity) authenticationService = CdiUtil.bean (AuthenticationService)
duo_host = configurationAttributes.get ("duo_host"). getValue2 ()
si (étape == 1): print "Duo. Préparez-vous pour l'étape 1"
retourne True elif (step == 2): print "Duo. Préparez-vous pour l'étape 2"
utilisateur = authenticationService.getAuthenticatedUser () si (utilisateur == aucun): print "Duo. Préparez-vous pour l'étape 2. Echec de la détermination du nom d'utilisateur" retourne Faux nom_utilisateur = utilisateur.getUserId ()
duo_sig_request = duo_web.sign_request (self.ikey, self.skey, self.akey, nom d'utilisateur) print "Duo. Préparez-vous pour l'étape 2. duo_sig_request:" + duo_sig_request identity.setWorkingParameter ("duo_host", duo_host) identity.setWorkingParameter ("duo_sig_request", duo_sig_request)
retourne True autre: retourne Faux
def getExtraParametersForStep (self, configurationAttributes, step): retourner Aucun
def getCountAuthenticationSteps (self, configurationAttributes): identity = CdiUtil.bean (Identity) if (identity.isSetWorkingParameter ("duo_count_login_steps")): return identity.getWorkingParameter ("duo_count_login_steps")
retour 2
def getPageForStep (self, configurationAttributes, step): si (étape == 2): retourne "/auth/duo/duologin.xhtml" revenir ""
def logout (self, configurationAttributes, requestParameters): retourne True
def isUserMemberOfGroup (self, utilisateur, attribut, groupe): is_member = False member_of_list = user.getAttributeValues (attribut) if (member_of_list! = None): pour member_of dans member_of_list: si StringHelper.equalsIgnoreCase (group, member_of) ou member_of.endswith (group): is_member = True Pause
retourne_membre
def processAuditGroup (self, user): si (self.use_audit_group): is_member = self.isUserMemberOfGroup (utilisateur, self.audit_attribute, self.audit_group) if (is_member): print "Duo. Authentifiez-vous pour processAuditGroup. User '" + user.getUserId () + "' membre du groupe d'audit" print "Duo. Authentifiez-vous pour processAuditGroup. Envoi d'un courrier électronique concernant l'utilisateur '" + user.getUserId () + "' se connecter à", self.audit_email # Envoyer un e-mail à l'administrateur user_id = user.getUserId () mailService = CdiUtil.bean (MailService) subject = "Connexion de l'utilisateur:" + user_id body = "Connexion utilisateur:" + user_id mailService.sendMail (self.audit_email, sujet, corps)
Click to rate this post! [Total: 0 Average: 0]
Topics and keywords
Themes: Serveur d'impression
License & attribution
License: CC BY-ND 4.0.
Attribution required: yes.
Manifest: https://tutos-gameserver.fr/llm-endpoints-manifest.json
LLM Endpoints plugin version 1.1.2.