This document in english.
L'utilisation de ce logiciel vous soumet à nos Conditions d'Utilisation et à notre Politique de Protection des Données.
version 1.3.9
OAuth2OOo fait partie d'une Suite d'extensions LibreOffice et/ou OpenOffice permettant de vous offrir des services inovants dans ces suites bureautique.
Cette extension est l'implémentation du protocole OAuth 2.0. Protocole permettant d'obtenir votre consentement pour qu'une application puisse accéder à vos données présentes chez les GAFA.
Elle permet d'exécuter des requêtes HTTP en BASIC et fournit les macros suivantes à titre d'exemple:
Si au préalable vous ouvrez un document, vous pouvez les lancer par:
Outils -> Macros -> Exécuter la macro... -> Mes macros -> OAuth2OOo -> nom-macro
-> Main -> Exécuter
Elle permet également de récupérer des données Internet dans une feuille Calc. Voir les fichiers Calc suivants à titre d'exemple:
Et enfin, elle permet de piloter Firefox par un fichier Calc (ou tout autre navigateur pris en charge par Selenium). Voir les fichiers suivant:
Etant un logiciel libre je vous encourage:
- A dupliquer son code source.
- A apporter des modifications, des corrections, des ameliorations.
- D'ouvrir un dysfonctionnement si nécessaire.
Bref, à participer au developpement de cette extension. Car c'est ensemble que nous pouvons rendre le Logiciel Libre plus intelligent.
Afin de profiter des dernières versions des bibliothèques Python utilisées dans OAuth2OOo, la version 2 de Python a été abandonnée au profit de Python 3.8 minimum.
Cela signifie que OAuth2OOo ne supporte plus OpenOffice et LibreOffice 6.x sous Windows depuis sa version 1.1.0.
Je ne peux que vous conseiller de migrer vers LibreOffice 7.x.
Les prérequis dépendent de la plateforme (architecture) sur laquelle l'extension est installée:
-
Si vous êtes sous Windows (win32 or win_amd64) vous devez utiliser LibreOffice version 7.x minimum.
-
Si vous êtes sous Linux (x86_64) avec une version Python de 3.8 à 3.12 vous devez utiliser LibreOffice version 6.x ou supérieure (LibreOffice version 7.x est fortement recommandée).
-
Pour toutes les autres plateformes / architectures (Linux, macOS... / aarch64, arm64...) ou version de Python, vous devez:
- Vous assurez que votre version de Python est 3.8 minimum.
- Télécharger le fichier requirements.txt.
- Installer à l'aide de pip, les paquets Python nécessaires à l'extension avec la commande:
pip install requirements.txt
- Installer l'extension sous LibreOffice version 6.x ou supérieure.
Sous Linux et macOS les paquets utilisés par l'extension, peuvent s'il sont déja installé provenir du système et donc, peuvent ne pas être à jour.
Afin de s'assurer que vos paquets Python sont à jour il est recommandé d'utiliser l'option Info système dans les Options de l'extension accessible par:
Outils -> Options -> Internet -> Protocole OAuth2 -> Voir journal -> Info système
Si des paquets obsolètes apparaissent, vous pouvez les mettre à jour avec la commande:
sudo -i pip3 install --upgrade <package-name>
Pour plus d'information voir: Ce qui a été fait pour la version 1.3.0.
Si vous voulez piloter Firefox dans Calc sous Ubuntu alors il vous faut reinstaller Firefox à partir du PPA de Mozilla.
Pour installer le PPA de Mozilla veuillez taper la commande:
sudo add-apt-repository ppa:mozillateam/ppa
Il semble important que le fichier n'ait pas été renommé lors de son téléchargement.
Si nécessaire, renommez-le avant de l'installer.
- Installer l'extension OAuth2OOo.oxt
Redémarrez LibreOffice après l'installation.
Attention, redémarrer LibreOffice peut ne pas suffire.
- Sous Windows pour vous assurer que LibreOffice redémarre correctement, utilisez le Gestionnaire de tâche de Windows pour vérifier qu'aucun service LibreOffice n'est visible après l'arrêt de LibreOffice (et tuez-le si ç'est le cas).
- Sous Linux ou macOS vous pouvez également vous assurer que LibreOffice redémarre correctement, en le lançant depuis un terminal avec la commande
soffice
et en utilisant la combinaison de touchesCtrl + C
si après l'arrêt de LibreOffice, le terminal n'est pas actif (pas d'invité de commande).
Cette extension n'est pas faite pour être utilisée seule, mais fournit le service OAuth2 à d'autres extensions LibreOffice / OpenOffice.
Voici comment nous utilisons son API:
identifier = "io.github.prrvchr.OAuth2OOo.OAuth2Service"
service = ctx.ServiceManager.createInstanceWithContext(identifier, ctx)
- Initialiser la Session:
initialized = service.initializeSession(registered_url, user_account)
La valeur renvoyée: initialized
est True si user_account
est déjà autorisé pour registered_url
.
- Initialiser l'Url:
initialized = service.initializeUrl(registered_url)
La valeur renvoyée: initialized
est True si registered_url
a été trouvé avec succès dans la configuration du service OAuth2.
format = 'Bearer %s'
token = service.getToken(format)
Le protocole OAuth2 permet d'accéder aux ressources de serveurs, après acceptation de l'autorisation de connexion, en échangeant des jetons.
La révocation a lieu dans la gestion des applications associées à votre compte.
Plus aucun mot de passe n'est stocké dans LibreOffice.
-
LibreOffice 7.3.7.2 - Lubuntu 22.04 - Python version 3.10.12
-
LibreOffice 7.5.4.2(x86) - Windows 10 - Python version 3.8.16 (sous Lubuntu 22.04 / VirtualBox 6.1.38)
-
LibreOffice 7.4.3.2(x64) - Windows 10(x64) - Python version 3.8.15 (sous Lubuntu 22.04 / VirtualBox 6.1.38)
-
LibreOffice 24.8.0.3 (X86_64) - Windows 10(x64) - Python version 3.9.19 (sous Lubuntu 22.04 / VirtualBox 6.1.38)
-
Ne fonctionne pas avec OpenOffice voir dysfonctionnement 128569. N'ayant aucune solution, je vous encourrage d'installer LibreOffice.
Je vous encourage en cas de problème 😕
de créer un dysfonctionnement
J'essaierai de le résoudre 😄
-
Ecriture d'une nouvelle interface XWizard afin de remplacer le service Wizard devenu défectueux avec les versions 6.4.x et 7.x de LibreOffice (voir bug 132110).
Cette nouvelle interface corrige également le bug 132661 et le bug 132666 et permet d'accéder aux versions 6.4.x et 7.x de LibreOffice...
De plus, ce nouveau XWizard ajoute de nouvelles fonctionnalités telles que:
- Redimensionnement automatique de l'assistant aux dimensions de la première page affichée.
- Déplacement automatique vers la page X à l'ouverture si possible.
-
Correction d'un problème avec les jetons sans expiration (tels qu'utilisés par Dropbox) lors du test de leur validité...
-
Beaucoup d'autres correctifs...
-
Réécriture de l'assistant OAuth2 (Wizard) en essayant de suivre au mieux le modèle MVA. Cet assistant est composé de 5 pages héritant de l'interface UNO XWizardPage:
-
Réécriture des trois services UNO fournis par l'extension OAuth2OOo dans trois fichiers distincts:
- Le service OAuth2Service implémentant l'interface décrite dans le fichier IDL XOAuth2Service.
- Le service OAuth2Dispacher implémentant l'interface UNO XDispatchProvider.
- Le service OAuth2Handler implémentant l'interface UNO XInteractionHandler2.
-
Réécriture de la fenêtre des options accessible par Outils -> Options -> Internet -> Protocole OAuth2. Cette fenêtre est composée de deux fenêtres:
-
Réécriture d'un modèle de données unique OAuth2Model gérant l'assistant, les services, et la fenêtre des options.
-
L'erreur de flux de bouclage Google a été corrigée. Voir Dysfonctionnement #10
-
Utilisation pour Dropbox de leur nouvelle API avec des jetons expirables.
-
Beaucoup d'autres correctifs...
-
Portage de l'API Python Requests vers l'API LibreOffice / OpenOffice UNO. Deux interfaces UNO sont accessibles:
- Les paramètres de requête HTTP: com.sun.star.rest.XRequestParameter.idl
- La réponse à la requête HTTP: com.sun.star.rest.XRequestResponse.idl
L'interface XRequestParameter prend en charge la gestion des jetons de synchronisation ainsi que la pagination des requêtes HTTP, telles qu'elles sont utilisées dans les API HTTP Rest.
-
La mise à jour et le téléchargement des fichiers est possible grâce aux méthodes ou propriétés:
XOAuth2Service.download()
permettant le téléchargement de fichiers avec reprise.XOAuth2Service.upload()
permettant la mise à jour de fichiers avec reprise.XOAuth2Service.getInputStream()
pour obtenir un flux d'entrée.XRequestParameter.DataSink
pour définir un flux d'entrée.XRequestResponse.getInputStream()
pour obtenir un flux d'entrée.
-
Portage de l'API Java javax.json vers l'API LibreOffice / OpenOffice UNO comme défini dans les fichiers idl: com.sun.star.json.*
- Une fabrique de structures JSON est accessible via l'interface
getJsonBuilder()
de XRequestParameter. - Un analyseur Json est renvoyé par l'interface
getJson()
de XRequestResponse.
- Une fabrique de structures JSON est accessible via l'interface
Cela rend les requêtes HTTP utilisant JSON facilement utilisable dans le langage BASIC de LibreOffice.
-
Ecriture de 15 fonctions en AddIns de Calc comme décrit dans les fichiers suivants:
- Le fichier OAuth2Plugin.idl qui declare à UNO les nouvelles interfaces.
- Le fichier CalcAddIns.xcu qui rend disponible ces nouvelles interface dans le liste des fonctions de Calc.
- Le fichier OAuth2Plugin.py qui est l'implementation du service UNO
com.sun.star.auth.Oauth2Plugin
founissant ces nouvelles interfaces. - Le fichier plugin.py qui est la bibliotheque implementant les interface de ce nouveau service UNO.
-
Ces 4 nouveaux fichiers donne acces à 15 nouvelles formules Calc qui sont:
GETHTTPBOBY(URL,METHOD,ENCODING,PARAMETERS)
PARSEHTML(DATA,PATH,BASEURL)
PARSEXML(DATA,PATH,BASEURL)
PARSEJSON(DATA,PATH)
JAVASCRIPT2XML(DATA,PATH)
XML2JSON(DATA,PATH)
JAVASCRIPT2JSON(DATA,PATH)
DUBLINCORE2JSON(DATA,BASEURL)
JSONLD2JSON(DATA,BASEURL)
MICRODATA2JSON(DATA,BASEURL)
MICROFORMAT2JSON(DATA,BASEURL)
OPENGRAPH2JSON(DATA,BASEURL)
RDFA2JSON(DATA,BASEURL)
FLATTENJSON(DATA,TYPENAME,PATH,SEPARATOR)
SPLITJSON(DATA,TYPENAME,PATH,SEPARATOR)
-
Fin du support de Python 2.x et donc d'OpenOffice.
-
Intégration de Selenium version 4.10 dans l'extension afin de rendre LibreOffice capable de piloter un navigateur via des formules Calc insérées dans une feuille de calcul.
-
Utilisation de webdriver_manager version 3.8.6 permettant d'automatiser l'installation du WebDriver du navigateur.
-
Création de 5 formules Calc permettant le pilotage du navigateur:
BROWSEROPEN(BROWSER,PATH,INIT,OPTIONS)
BROWSERCLICK(SESSION,BY,PATH,URL,INIT,WAIT)
BROWSERFIELD(SESSION,BY,PATH,VALUE,URL,INIT,WAIT)
BROWSERFORM(SESSION,FORM,URL,INIT,WAIT)
BROWSERCONTENT(SESSION,URL,ENCODING)
-
Création d'une formule Calc permettant l'authentification HTTP Basic Auth pour les requêtes HTTP:
HTTPAUTH(NAME,PASSWORD)
-
La formule Calc
GETHTTPBOBY
a été renommée enHTTPCONTENT
.
- Correction d'un problème dans l'implémentation de l'interface com.sun.star.rest.XRequestParameter ne permettant pas de créer des objets JSON vides (ie : "Object": {} ) comme demandé par l'API Microsoft Graph.
-
Modification des fichiers idl: XRequestParameter.idl et XRequestResponse.idl et des implementations python sous jacente: requestparameter.py et requestresponse.py afin de rendre possible les requêtes POST avec l'encodage application/x-www-form-urlencoded. Voir dysfonctionnement #13.
-
3 macros en BASIC:
ChatGPTRequest
,HTTPGetRequest
etHTTPPostRequest
sont disponible dans: Outils -> Macros -> Exécuter la macro... -> Mes macros -> OAuth2OOo. Attention, ces macros ne fonctionneront pas si aucun document n'est ouvert (je ne sais pas pourquoi?)... -
Désormais, à chaque push, un workflow effectue un scan du code avec Fluid Attacks. Ceci a été mis en place pour suivre le Cloud Application Security Assessment (CASA) et répondre aux exigences de revalidation de l'extension OAuth2OOo avec Google.
-
Pour les mêmes raisons, la Politique de Protection des Données a été modifiée afin de préciser la Nature et l'étendue des droits sur vos données.
-
Il existe désormais deux méthodes pour créer le service OAuth2Service qui sont :
create()
sans paramètre, renvoie une instance du service.createWithOAuth2([in] string sUrl, [in] string sUser)
avec une Url et l'adresse de l'utilisateur, renvoie une instance du service avec le protocole OAuth2.
Dans sa deuxième forme, l'assistant d'autorisation OAuth2 (Wizard) se lancera automatiquement si l'étendue des droits de l'Url n'a pas encore été accordée par l'utilisateur (ie : première connexion).
Si tel est le cas et que l'assistant est abandonné, une valeur nulle sera renvoyée à la place du service demandé.
-
Deux macros BASIC:
GoogleAPIRequest
etGraphAPIRequest
permettent d'effectuer des requêtes HTTP sur les API de Google Contact et Microsoft Graph.
Le protocole OAuth2 indispensable à l'utilisation de ces API est intégré de manière automatique et transparente aux requêtes HTTP. Vous n'aurez pas à vous en soucier.
- Ajout d'une nouvelle méthode
isAuthorized()
à l'interface XOAuth2Service prise en charge par le service OAuth2Service. Cette méthode permet de lancer l'assistant de configuration OAuth2 si l'utilisateur n'est pas autorisé.
- Correction d'une erreur lors de l'actualisation des jetons OAuth2.
- Correction d'une erreur sur isAuthorized() du OAuth2Service.
- Mise à jour des paquets python embarqués.
- Utilisation de la nouvelle version 3.6.2 de pyRdfa3.
- Tous les paquets Python nécessaires à l'extension sont désormais enregistrés dans un fichier requirements.txt suivant la PEP 508.
- Désormais si vous n'êtes pas sous Windows alors les paquets Python nécessaires à l'extension peuvent être facilement installés avec la commande:
sudo -i pip3 install requirements.txt
- Simplification de la section Prérequis.
- De nombreuses corrections...
- Correction de la propriété
Headers
dans l'implémentation de l'interface UNO XRequestResponse permettant d'obtenir les en-têtes d'une réponse HTTP. - De nombreuses corrections...
- Intégration des binaires Python 3.8 pour Linux x86_64 et Darwin x86_64, afin d'être compatible avec la version de LibreOffice 24.2.x sous Linux, pour les paquets
lxml
,ijson
,cffi
etcharset-normalizer
. - Ouverture du dysfonctionnement #159988 pour impossibilité d'importer des bibliothèques Python contenant des fichiers binaires avec LibreOffice 24.2.x sous Linux.
- Mise en oeuvre d'une solution de contournement pour le dysfonctionnement #159988 dont la résolution risque de prendre du temps.
- Mise à jour du paquet Python Idna vers la version 3.7 afin de répondre à l'alerte de vulnérabilité de sécurité.
- Quelques corrections...
- Mise à jour du paquet Python tqdm vers la version 4.66.4 afin de répondre à l'alerte de vulnérabilité de sécurité.
- Mise à jour du paquet Python requests vers la version 2.32.3 afin de répondre à l'alerte de vulnérabilité de sécurité.
- Afin d'éviter tout conflit avec le paquet Python oauth2, le dossier mis dans le chemin python par l'extension a été renommé
oauth20
. Cela devrait également résoudre le dysfonctionnement n°10. - Quelques corrections...
- Mise à jour du paquet Python beautifulsoup vers la version 4.12.3.
- Mise à jour du paquet Python certifi vers la version 2024.7.4.
- Ajout des fichiers binaires pour les version 3.9, 3.11 et 3.12 de Python/Manylinux pour le paquet Python cffi version 1.16.0.
- Mise à jour du paquet Python charset-normalizer vers la version 3.3.2.
- Mise à jour du paquet Python exceptiongroup vers la version 1.2.2.
- Mise à jour du paquet Python extruct vers la version 0.17.0.
- Mise à jour du paquet Python html-text vers la version 0.6.2.
- Mise à jour du paquet Python ijson vers la version 3.3.0.
- Mise à jour du paquet Python jsonpath_ng vers la version 1.6.1.
- Mise à jour du paquet Python lxml vers la version 5.2.2.
- Ajout du paquet Python lxml-html-clean version 0.2.0.
- Mise à jour du paquet Python packaging vers la version 24.1.
- Mise à jour du paquet Python prasel vers la version 1.9.1.
- Mise à jour du paquet Python pycparser vers la version 2.22.
- Mise à jour du paquet Python pyparsing vers la version 3.1.2.
- Mise à jour du paquet Python pyRdfa3 vers la version 3.6.4.
- Mise à jour du paquet Python python-dotenv vers la version 1.0.1.
- Mise à jour du paquet Python selenium vers la version 4.23.1.
- Mise à jour du paquet Python setuptools vers la version 72.1.0 afin de répondre à l'alerte de vulnérabilité de sécurité.
- Mise à jour du paquet Python sniffio vers la version 1.3.1.
- Mise à jour du paquet Python trio vers la version 0.26.0.
- Ajout du paquet Python typing-extensions version 4.12.2.
- Mise à jour du paquet Python urllib3 vers la version 2.2.2.
- Mise à jour du paquet Python validators vers la version 0.33.0.
- Mise à jour du paquet Python w3lib vers la version 2.2.1.
- Mise à jour du paquet Python webdriver-manager vers la version 4.0.2.
- Ajout du paquet Python websocket-client version 1.8.0.
La mise à jour de tous ces paquets Python devrait permettre d'utiliser Python 3.8, 3.9, 3.10, 3.11 et 3.12 sous l'architecture ManyLinux x86_64.
Pour les architectures win32 et win_amd64, seule la version 3.8 de Python est prise en charge. Cela signifie, puisque Python est intégré à LibreOffice pour ces architectures, que seules les versions 7.x et 24.x de LibreOffice sont prises en charge.
Si votre architecture n'est pas encore supportée par OAuth2OOo (Mac OSX, arm...), je vous conseille d'ouvrir un dysfonctionnement pour que je puisse ajouter les fichiers binaires manquants.
- Mise à jour du paquet Python attrs vers la version 24.2.0.
- Mise à jour du paquet Python cffi vers la version 1.17.0.
- Mise à jour du paquet Python idna vers la version 3.8.
- Mise à jour du paquet Python lxml vers la version 5.3.0.
- Mise à jour du paquet Python pyparsing vers la version 3.1.4.
- Mise à jour du paquet Python setuptools vers la version 73.0.1.
- Mise à jour du paquet Python soupsieve vers la version 2.6.
- Mise à jour du paquet Python tqdm vers la version 4.66.5.
- Mise à jour du paquet Python trio vers la version 0.26.2.
- La journalisation accessible dans les options de l’extension s’affiche désormais correctement sous Windows.
- Les modifications apportées aux options de l'extension, qui nécessitent un redémarrage de LibreOffice, entraîneront l'affichage d'un message.
- Afin de fonctionner avec LibreOffice 24.8.x pour Windows (32 et 64 bits), ajout des fichiers binaires, pour Python version 3.9 et les architectures win32 ou win_adm64, à tous les paquets Python inclus dans l'extension.
- Modification des options de l'extension accessibles via : Outils -> Options... -> Internet -> Protocole OAuth2 afin de respecter la nouvelle charte graphique.
- Ajout d'une nouvelle méthode
fromJson()
à l'interface XRequestParameter pour faciliter l'exécution d'une requête HTTP à partir de paramètres provenant de fichiers de configuration LibreOffice (ie: fichiers XML xcu/xcs). - Préparation à la migration des périmètres de droits spécifiques aux connexions aux serveurs de Google.
- Quelques corrections...
- Toutes les données nécessaires à la gestion du flux du code d'autorisation OAuth2 sont désormais stockées dans le fichier de configuration de LibreOffice Options.xcu.
- L'API OAuth2 de Yahoo a été intégrée et sera disponible dans l'extension eMailerOOo prochainement.
- Il est désormais possible d'avoir une uri de redirection OAuth2 (ie:
redirect_uri
) en mode https comme l'impose l'utilisation de l'API de Yahoo. Merci à JavaScript et Github. - Le port TCP/IP permettant la réception du code d'autorisation des GAFA est désormais choisi au hasard parmi les ports libres (ie: plus de problèmes de conflits).
-
Ajouter de nouvelles langue pour l'internationalisation...
-
Tout ce qui est bienvenu...