You are not logged in.
Bonjour,
Je cherche à créer une sorte de SSO avec l'API : j'aimerai créer un formulaire ou un lien sur une site à part (autre domaine / serveur que GLPI) permettant à un utilisateur d'être redirigé vers GLPI en étant déjà authentifié.
J'ai réussi à faire fonctionner la méthode initsession et je récupère le session token.
J'ai testé la méthode getfullsession pensant qu'elle me fournirait des informations permettant de créer un formulaire ou un lien vers GLPI en automatiquement connecté. Mais je ne vois rien de tel dans le retour de la fonction getfullsession :
{
"session":{
"glpi_plugins":{
"1":"formcreator",
"2":"news",
"3":"behaviors",
"4":"datainjection"
},
"valid_id":"XXXXXXXXXXXXXXXXXXXXXXXXXXX",
"glpi_currenttime":"2018-12-04 10:51:48",
"glpi_use_mode":0,
"glpi_table_of":{
"User":"glpi_users",
"Config":"glpi_configs",
"Profile":"glpi_profiles",
"APIClient":"glpi_apiclients"
},
"glpiID":120,
"glpiname":"MCF",
"glpirealname":"MCF",
"glpifirstname":"MCF",
"glpidefault_entity":0,
"glpiusers_idisation":true,
"glpiextauth":1,
"glpiauthtype":1,
"glpiroot":"",
"glpi_plannings":[
],
"glpicrontimer":1543917008,
"glpi_tabs":[
],
"glpibackcreated":0,
"glpicsv_delimiter":";",
"glpidate_format":1,
"glpidefault_requesttypes_id":1,
"glpidisplay_count_on_home":5,
"glpiduedatecritical_color":"#ff0000",
"glpiduedatecritical_less":5,
"glpiduedatecritical_unit":"%",
"glpiduedateok_color":"#06ff00",
"glpiduedatewarning_color":"#ffb800",
"glpiduedatewarning_less":20,
"glpiduedatewarning_unit":"%",
"glpifollowup_private":0,
"glpiis_ids_visible":0,
"glpikeep_devices_when_purging_item":0,
"glpilanguage":"fr_FR",
"glpilist_limit":15,
"glpilock_autolock_mode":1,
"glpilock_directunlock_notification":0,
"glpinames_format":1,
"glpinotification_to_myself":1,
"glpinumber_format":0,
"glpipdffont":"helvetica",
"glpipriority_1":"#fff2f2",
"glpipriority_2":"#ffe0e0",
"glpipriority_3":"#ffcece",
"glpipriority_4":"#ffbfbf",
"glpipriority_5":"#ffadad",
"glpipriority_6":"#ff5555",
"glpirefresh_ticket_list":0,
"glpiset_default_tech":1,
"glpiset_default_requester":1,
"glpishow_count_on_tabs":1,
"glpishow_jobs_at_login":0,
"glpitask_private":0,
"glpitask_state":1,
"glpiuse_flat_dropdowntree":0,
"glpilayout":"lefttab",
"glpiticket_timeline":1,
"glpiticket_timeline_keep_replaced_tabs":0,
"glpipalette":"auror",
"glpihighcontrast_css":0,
"glpi_dropdowntranslations":[
],
"glpipluralnumber":2,
"glpiprofiles":{
"1":{
"name":"Self-Service",
"entities":[
{
"id":0,
"name":"Root entity",
"is_recursive":0
}
]
}
},
"glpiactiveprofile":{
"id":1,
"name":"Self-Service",
"interface":"helpdesk",
"is_default":1,
"helpdesk_hardware":1,
"helpdesk_item_type":[
"Computer",
"Monitor",
"NetworkEquipment",
"Peripheral",
"Phone",
"Printer",
"Software"
],
"ticket_status":{
"1":{
"2":0,
"3":0,
"4":0,
"5":0,
"6":0
},
"2":{
"1":0,
"3":0,
"4":0,
"5":0,
"6":0
},
"3":{
"1":0,
"2":0,
"4":0,
"5":0,
"6":0
},
"4":{
"1":0,
"2":0,
"3":0,
"5":0,
"6":0
},
"5":{
"1":0,
"2":0,
"3":0,
"4":0
},
"6":{
"1":0,
"2":0,
"3":0,
"4":0,
"5":0
}
},
"create_ticket_on_login":0,
"tickettemplates_id":0,
"followup":0,
"knowbase":0,
"password_update":1,
"reminder_public":0,
"reservation":0,
"rssfeed_public":0,
"show_group_hardware":0,
"task":0,
"ticket":0,
"ticketvalidation":0,
"entities":[
{
"id":0,
"name":"Root entity",
"is_recursive":0
}
]
},
"glpiactiveentities":[
0
],
"glpisearch":[
],
"glpiactiveentities_string":"'0'",
"glpiparententities":[
],
"glpiparententities_string":"",
"glpiactive_entity":0,
"glpiactive_entity_recursive":0,
"glpiactive_entity_name":"Root entity",
"glpiactive_entity_shortname":"Root entity",
"glpishowallentities":0,
"glpigroups":[
]
}
}
J'ai déjà créé des scripts qui envoi au formulaire de login de GLPI l'identifiant et mot de passe et ça marche bien. Par contre j'aimerai faire un système qui "résiste" au changement de mot de passe utilisateur en utilisant les token API (qui ne change pas lorsque l'utilisateur change de mot de passe).
Sauriez-vous comment faire ?
Merci,
Martin
Offline
vous pouvez ouvrir une session admin et récupérer /User/$user_id qui vous envoie le personal token de l'utilisateur.
ensuite vous pouvez faire un init session avec ce token utilisateur et le app-token
/initSession?Content-Type=%20application/json&app_token=".$app_token."&user_token=".$user_token;
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
Bonjour,
Merci pour ta réponse.
Je cherche ensuite à créer une URL ou un formulaire afin d'identifier automatiquement l'utilisateur sur l'interface WEB de GLPI.
Une idée ?
Merci,
Martin
Offline
Bonsoir,
J'ai tenté de faire comme tu me l'indiques:
1/ J'ai fait une requête initSession avec le SuperAdmin
2/ Avec le session token récupéré, j'ai fait une requête /user/114 (<= 144 = ID de l'utilisateur que je souhaite connecter à l'interface web de glpi). J'obtiens le personnal token
3/ Je rentre ce personnal token dans l'url au niveau de user_token (?)
/apirest.php/initSession?Content-Type=%20application/json&app_token=BBBBBBBBBBBBBBBB&user_token=AAAAAAAAAAAAA
J'obtiens :
["ERROR_GLPI_LOGIN_USER_TOKEN","le paramètre user_token semble incorrect"]
Une idée ?
Merci,
Martin
Offline
Il fallait lire 114 et pas 144 ;-)
Offline
oups, le usertoken est pour la version 9.1 pour les versions suivantes il faut utiliser l'API token de l'utilisateur.
mais la syntaxe ci dessous fonctionne en 9.3.3
localhost/glpi933//apirest.php/initSession?Content-Type=%20application/json&app_token=xxxxxxx&user_token=yyyyyyy
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
Bonsoir,
En utilisant le jeton API, j'obtiens la réponse:
{"session_token":"yyyyyyyyyyyyyyyyyyyyyyyyyy"}
Donc ca marche.
J'aimerai maintenant connecter mon utilisateur sur l'interface web sans qu'il ait besoin de taper son identifiant/mot de passe.
Merci pour votre aide
Martin
Offline
ça je ne sais pas faire, je ne sais même pas si c'est possible a part faire du vrai SSO.
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline