This document in English.
L’utilisation de ce logiciel vous soumet à nos Conditions d’utilisation et à notre Politique de protection des données.
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:
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:
pip install requirements.txt
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:
pip 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.
Redémarrez LibreOffice après l’installation.
Attention, redémarrer LibreOffice peut ne pas suffire.
soffice
et en utilisant la combinaison de touches Ctrl + 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)
initialized = service.initializeSession(registered_url, user_account)
La valeur renvoyée: initialized
est True si user_account
est déjà autorisé pour registered_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:
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:
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:
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.*
getJsonBuilder()
de XRequestParameter.getJson()
de XRequestResponse.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:
com.sun.star.auth.Oauth2Plugin
founissant ces nouvelles interfaces.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 en HTTPCONTENT
.
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
et HTTPPostRequest
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.
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.GoogleAPIRequest
et GraphAPIRequest
permettent d’effectuer des requêtes HTTP sur les API de Google Contact et Microsoft Graph.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é.pip install requirements.txt
Headers
dans l’implémentation de l’interface UNO XRequestResponse permettant d’obtenir les en-têtes d’une réponse HTTP.lxml
, ijson
, cffi
et charset-normalizer
.oauth20
. Cela devrait également résoudre le dysfonctionnement n°10.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.
Ajouter de nouvelles langue pour l’internationalisation…
Tout ce qui est bienvenu…