PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Groupware via Webservice.
Groupware via Webservice.
Débuté par M.Damien, 15 oct. 2019 13:09 - 7 réponses
Posté le 15 octobre 2019 - 13:09
Bonjour,

Ayant utilisé le groupware pour sécuriser l’accès à certaines applications.
Je souhaiterais à présent utiliser ce groupware pour contrôler le droit à l'utilisation d'un web service et générer un Token.

Cela semble "impossible" à première vue.

Les passwords sont bien entendus crypter et actuellement la procédure gpwvérifiemotdepasse(login, motsdepasse) renvoie toujours faux malgré la connexion préalable au GPW.

Ne sachant pas exactement ce qui sa passe via la fonction gpwcryptemotdepasse(login, motsdepasse) Il n'est pas possible de créer une procédure maison de vérification.

Quelqu'un aurait déjà trouvé une solution technique à ce problème?
Posté le 17 octobre 2019 - 18:46
Personne n'aurait une idée?
Membre enregistré
1 304 messages
Popularité : +47 (51 votes)
Posté le 18 octobre 2019 - 09:06
Salut Damien,

Tu dois utiliser la fonction gpwVérifieUtilisateur()

nRes est un entier = gpwVérifieUtilisateur(Login, MotPasse)
// Si le login a échoué
SI nRes <> gpwOk ALORS
SELON nRes
CAS gpwErreur : Erreur("Erreur à l'initialisation du groupware.")
CAS gpwUtilisateurInconnu : Erreur("Utilisateur inconnu.")
CAS gpwMotPasseInvalide : Erreur("Mot de passe invalide.")
FIN
FinProgramme()
FIN


Bon Dev
Daryl

--
http://www.concept4u2.com
Posté le 21 octobre 2019 - 16:49
Bonjour,

J'avais déjà effectué cette fonction.

Le GroupWare étant grisé lors de la création d'un projet Webservice. Je pense qu'Il n'est pas possible de se connecter via les procédure standard.

Le code suivant fonctionne via une Page webdev mais pas via un webservice.
J'ai pourtant accès aux tables GPU via la variable de connections.

Voici le code utiliser actuellement

CONNEC est une Connexion
CONNEC..Utilisateur = "*******"
CONNEC..MotDePasse = "*******"
CONNEC..Serveur = "*******"
CONNEC..Source = "*******"
CONNEC..Accès = 3
CONNEC..Compression = 0
CONNEC..InfosEtendues = "CRYPTAGE=RC5_16"
CONNEC..Cryptage = hCryptageRC5_16
CONNEC..Libellé = "RHTIME"
CONNEC..BaseDeDonnées = "*******"
CONNEC..OptionsCurseur = ""
CONNEC..Provider ="WinDevClientServeurHF"
CONNEC..ActiveDirectory = "0"
CONNEC..TailleCache = "-2"


IF HOuvreConnexion(CONNEC) = Faux THEN
Erreur(ErreurInfo())
FinProgramme()
SINON
HChangeConnexion("*",CONNEC)
gpwOuvreConnexion(CONNEC)
END



nRes est un entier= gpwVérifieUtilisateur("*******","*******") --> Groupeware n'est pas initialiser ou pas activé.

// Si le login a échoué
SI nRes<>gpwOk ALORS
SELON nRes
CAS gpwErreur : Erreur("Erreur à l'initialisation du groupware.")
CAS gpwUtilisateurInconnu : Erreur("Utilisateur inconnu.")
CAS gpwMotPasseInvalide : Erreur("Mot de passe invalide.")
FIN
FinProgramme()
FIN
Membre enregistré
1 304 messages
Popularité : +47 (51 votes)
Posté le 22 octobre 2019 - 10:23
Salut Damien,

Je vois que tu essayes d'activer la connexion avec la fonction HOuvreConnexion() mais pour le groupware tu devrais utiliser gpwOuvreConnexion()

Voir: https://doc.pcsoft.fr/fr-FR/?3041007

As-tu déjà essayé avec cette fonction ?

Cordialement
Daryl

--
http://www.concept4u2.com
Posté le 22 octobre 2019 - 17:04
Salut Daryl,

Je viens de tester à l'instant

Cela me renvoie le message erreur suivant : Le groupware utilisateur n'est initialisé ou activé.
L'objectif étant de l'activer :-) le message d'erreur n'est pas d'un grand aide

Merci
Membre enregistré
135 messages
Popularité : +21 (23 votes)
Posté le 23 octobre 2019 - 09:30
Bonjour,
Le Groupware utilisateur n'est effectivement pas accessible depuis un webservice et c'est bien dommage (ou alors il faut faire du HDecritExterne et tout reprogrammer, bref sans intérêt)
J'avais fait remonter l'information à PCSoft, il y a quelques années déjà (mai 2017 après recherche)

Voici deux extraits de la réponse qui m'avait été apportée :

[...]
"Dans l'attente d'une évolution sur ce point, la seule alternative qu'il semble y avoir est de réaliser un exécutable avec WINDEV qui effectue cet vérification. Il faudra donc, dans le code du WebService, lancer cet exécutable. "
[...]
Votre idée est intéressante. Je l’ai transmise en tant que suggestion à notre équipe de développement pour qu’ils étudient son implémentation dans une prochaine version.
Membre enregistré
9 messages
Posté le 23 octobre 2019 - 12:38
Dominique,

J'avoue ne pas voir l'intérêt exact du HDecritExterne dans ce cas précis.

Quelle solution as-tu utilisé?


Actuellement dans mon cas les APPs ont accès uniquement aux tables GPU et les autres données transitent via un web service.
Si je rajoute l’accès à la table token via les apps je résous le problème.