Frappe Framework
Utiliser Frappe comme service OAuth
Grafana s’installe sur un système Debian, Frappe sur le même serveur, en Docker ou sur Frappe Cloud. Le bouton Sign in with Frappe apparaît après redémarrage.
Rôle
Le guide branche une application tierce, ici Grafana, sur l’OAuth de Frappe, sans autre code que des fichiers de configuration. Le bureau OAuth est aussi décrit dans OAuth2.
Il faut un système Debian (Debian, Ubuntu, Pop OS) et soit un compte Frappe Cloud, soit un site Frappe, plus simple s’il est sur le même serveur.
Installer
L’installation du framework renvoie vers la documentation Debian et Ubuntu, vers frappe_docker, ou vers Frappe Cloud. Grafana suit le guide v9, sur Debian. Puis :
systemctl enable grafana-server.service
systemctl start grafana-server
systemctl status grafana-serverClient OAuth
Après la prise en main du site, AwesomeBar ou Ctrl + G, « OAuth Client », New OAuth Client. Renseigner App Name (Grafana), les portées OpenID et les Redirect URIs. L’URI Grafana est <grafana-url>/login/generic_oauth. Sans nom de domaine, l’adresse IP remplace <grafana-url>. L’enregistrement produit App Client ID et App Client Secret.
grafana.ini
Les fichiers sont dans /etc/grafana. On édite grafana.ini. Le texte dit d’ouvrir la section [oauth.generic_oauth]. Le bloc publié est :
[auth.generic_oauth]
enabled = True
name = Frappe
client_id = ""
client_secret = ""
scopes = openid all
auth_url = <frappe_site_url>/api/method/frappe.integrations.oauth2.authorize
token_url = <frappe_site_url>/api/method/frappe.integrations.oauth2.get_token
api_url = <frappe_site_url>/api/method/frappe.integrations.oauth2.openid_profileDerrière un reverse proxy, domaine et root_url se posent dans la section server. Puis sudo systemctl restart grafana-server.service. La page de connexion montre Sign in with Frappe. Les identifiants sont ceux du site Frappe.
Point d’attention
Le titre de section dans la prose et celui du fichier ini ne sont pas les mêmes : oauth.generic_oauth d’un côté, auth.generic_oauth de l’autre. client_id et client_secret restent vides dans l’exemple : ce sont les valeurs générées par l’OAuth Client.
