Connexion authentification externe (SSO)

Hello,

Nous souhaiterions accèder à Dokos depuis notre SSO (keycloak).

J’ai l’impression que ça l’air possible en lisant ça dans la doc ERPNext https://docs.erpnext.com/docs/v13/user/manual/en/erpnext_integration/fairlogin-integration

Est-ce que c’est aussi fonctionnel côté Dokos et quelles seraient les URLs à renseigner dans le cas Dokos svp ?

Hello Maxime,

Il n’y a pas de différence entre ERPNext et Dokos sur cette partie là.
Par contre le connecteur fairlogin me semble hardcodé pour renvoyer sur l’API de Fairkom.
Je vais tester une connexion avec Keycloak et je reviens vers toi dès que possible pour voir comment peut se faire l’intégration.

Bonne journée !

En attendant qu’on mette à jour la doc, voilà les infos pour configurer Keycloak:

Il faut créer une nouvelle clé de connexion sociale de type “Personnalisé” et renseigner les infos suivantes (à adapter en fonction du client Keycloak):


image

Merci ! On va tenter ça prochainement

C’est bon j’ai réussit.

Le truc pas facile, qu’il faut prendre en compte, c’est que le nom de la connexion doit etre à la fin dans l’url de redirection, en l’espèce ici “dokos”.

Merci pour ton aide!

1 Like

Question complémentaire pour @chdecultot est-ce qu’il est possible de configurer côté Dokos une liste de comptes du SSO qui peut se connecter mais pas tous ? Concrètement, pour l’heure on n’a pas forcément envie que toutes les personnes avec un compte sur notre SSO puissent se connecter à notre Dokos. :sweat_smile:

En gros, la théorie voudrait que ce filtrage se fasse au niveau de l’application, mais peu d’applications le font finalement.

A partir du moment, où on peut configurer un role par défaut, cela me va, et de ce que je comprends, c’est déjà le cas.

Hello Ă  tous les deux,

Effectivement pour le moment on ne peut pas filtrer les utilisateurs a priori.
Par contre, lors de la première connexion, le système leur attribut un rôle par défaut (modifiable dans les paramètres du portail). Par défaut c’est le rôle “Client” qui ne donne accès qu’au portail.
Donc pas de risque d’accéder au bureau.

A l’occasion de me pencherai sur la question pour voir si on peut mapper des attributs définis dans Keycloack avec des rôles/profils de rôles dans Dokos.Ca permettrait de déléguer la gestion des rôlesau fournisseur d’identité.

2 Likes

Hello, j’ai fait la configuration comme expliquée. j’arrive bien au login/mot de passe du sso tiers-lieux. Après la connexion, je tombe sur cette API mais la connexion ne se fait pas :
https://laplumealoup.dokos.cloud/api/method/frappe.integrations.oauth2_logins.custom/dokos?state=eyJzaXRlIjogImh0dHBzOi8vbGFwbHVtZWFsb3VwLmRva29zLmNsb3VkIiwgInRva2VuIjogIjA5NjMwYTcyMzVlMzgxMDQ4MGZmOGIzNjk1NzY5MmM3NDg5NzMwNWJkZjRiOGFjYTEyNmQ3ZGQwIiwgInJlZGlyZWN0X3RvIjogbnVsbH0%3D&session_state=c0041a18-7469-479d-93c4-3ab4ca3e0e21&code=19a5ab72-28c4-4c97-9e1d-32029b16aae0.c0041a18-7469-479d-93c4-3ab4ca3e0e21.cfbce4d5-e73e-45e2-90cf-b7d3d4e5392a

Voici mes configurations :

Salut Simon,

Peux-tu poster le message que tu as quand tu essayes de te connecter ?

Côté Keycloak, ça fait longtemps que je n’ai réessayé, mais voilà la configuration que j’avais faite à l’époque:


J’ai bien cette config côté indie. Une fois entré mes identifiants, je tombe juste sur l’API suivante :
https://laplumealoup.dokos.cloud/api/method/frappe.integrations.oauth2_logins.custom/dokos?state=eyJzaXRlIjogImh0dHBzOi8vbGFwbHVtZWFsb3VwLmRva29zLmNsb3VkIiwgInRva2VuIjogIjRmODY2ZmFmMDc4YzMwN2Q2ZDQwYTU3YjA5YmYyZGU1ZTIzZmM0NTNkYzg3NmE1ODNiOTE5YjA4IiwgInJlZGlyZWN0X3RvIjogbnVsbH0%3D&session_state=34c4ca72-b736-4609-b86d-ee3aa89f1227&code=cf80a580-3dc7-4b07-b786-ea028d137861.34c4ca72-b736-4609-b86d-ee3aa89f1227.cfbce4d5-e73e-45e2-90cf-b7d3d4e5392a
Pas d’autre message.
Je vais essayer de regarder avec Indie comment ils ont fait.

Salut @Simons j’ai le même problème, comment as tu résolu la chose ?

J’ai finalement réussi grâce à cette page : Social Login (OIDC) does not work for custom IdP with error: Email not verified · Issue #35542 · frappe/erpnext · GitHub

Pour moi j’ai dû changer URL de redirection pour mettre à la fin le nom de la clé sociale que j’ai créé dans dokos
J’ai aussi ajouté dans Propriété de l'ID utilisateur la valeur preferred_username
J’ai aussi rajouté mon domaine dokos au début de la valeur URL de redirection
Enfin dans le compose j’ai exposé au web le service backend pour qu’il puisse communiquer avec mon keycloak

En résumé je copie les infos à remplir tel que décrit par la page ci-dessus :

- Provider name: <anything you want> (in my case keycloak)

- Client ID: <from your IdP> (in my case erpnext)
- Client Secret: from your IdP

- Base URL: https://<idp domain>/realms/<realm name>

- Authorize URL: /protocol/openid-connect/auth
- Access Token URL: /protocol/openid-connect/token
- Redirect URL:https://<erpnext domain>/api/method/frappe.integrations.oauth2_logins.custom/<Provider name> (so for my case is /api/method/frappe.integrations.oauth2_logins.custom/keycloak)
- API Endpoint: https://<idp domain>/realms/<realm name>/protocol/openid-connect/userinfo

- Auth URL Data: {"response_type": "code", "scope": "openid profile email"}

- User ID Property: preferred_username
1 Like