Monday.com
Ce guide vous explique comment configurer l'authentification unique (SSO) entre SmartLink et Monday.com en utilisant SAML 2.0 ou OpenID Connect.
Prérequis
- Plan Monday.com Enterprise
- Accès administrateur à Monday.com
- Domaine email vérifié
- Application configurée dans SmartLink avec SAML2 ou OpenID Connect
Note : Le SSO est disponible uniquement avec le plan Enterprise de Monday.com.
Configuration avec SAML 2.0 (Recommandé)
Configuration dans SmartLink
1. Créer l'application
- Connectez-vous à SmartLink en tant qu'administrateur
- Allez dans Applications → Ajouter
- Créez une nouvelle application :
- Nom : Monday.com
- URL :
https://[votre-compte].monday.com - Description : Plateforme de gestion du travail
- Icône : Choisissez l'icône Monday.com
2. Configurer SAML2
- Dans l'onglet Authentification
- Sélectionnez SAML2
- Configurez les paramètres suivants :
- Entity ID :
https://[votre-smartlink].link.vaultys.org/[appid] - ACS URL :
https://[votre-compte].monday.com/saml2/acs - Format NameID :
emailAddress - App ID :
[appid](identifiant unique généré automatiquement)
- Entity ID :
3. Récupérer les métadonnées
Notez les URLs suivantes :
- Métadonnées IdP :
https://[votre-smartlink].link.vaultys.org/api/saml2/[appid]/metadata - SSO URL :
https://[votre-smartlink].link.vaultys.org/api/saml2/sso/[appid] - SLO URL :
https://[votre-smartlink].link.vaultys.org/api/saml2/slo/[appid] - Entity ID :
https://[votre-smartlink].link.vaultys.org/[appid] - Certificat X.509 : Téléchargez depuis SmartLink
Configuration dans Monday.com
1. Accéder aux paramètres SSO
- Connectez-vous à Monday.com en tant qu'administrateur
- Cliquez sur votre avatar → Administration
- Dans le menu : Security → Single Sign-On
- Cliquez sur Set up SSO
2. Configuration SAML
Sélectionnez SAML et configurez :
- SSO URL :
https://[votre-smartlink].link.vaultys.org/api/saml2/sso/[appid] - Entity ID :
https://[votre-smartlink].link.vaultys.org/[appid] - Certificate : Collez le certificat X.509 depuis SmartLink
- Sign Out URL :
https://[votre-smartlink].link.vaultys.org/api/saml2/slo/[appid]
3. Configuration des attributs
| Attribut Monday | Attribut SAML | Obligatoire |
|---|---|---|
email | ✅ | |
| First Name | firstName | ✅ |
| Last Name | lastName | ✅ |
| Title | title | ❌ |
| Team | department | ❌ |
Configuration avec OpenID Connect
Configuration dans SmartLink
1. Configurer OpenID Connect
- Dans l'application Monday.com
- Onglet Authentification → OpenID Connect
- Notez :
- Client ID :
monday-xxxxxx - Client Secret :
secret-xxxxxx - App ID :
[appid]
- Client ID :
2. URLs de redirection
Ajoutez :
https://[votre-compte].monday.com/auth/oidc/callback
Configuration dans Monday.com
- Dans Security → Single Sign-On
- Sélectionnez OpenID Connect
- Configurez :
- Discovery URL :
https://[votre-smartlink].link.vaultys.org/api/oidc/[appid]/.well-known/openid-configuration - Client ID :
monday-xxxxxx - Client Secret :
secret-xxxxxx - Scopes :
openid profile email groups
Configuration des espaces de travail
Structure organisationnelle
workspaces:
- name: "Marketing"
default_role: "member"
groups:
- "smartlink-marketing"
boards:
- "Campaigns"
- "Content Calendar"
- "Social Media"
- name: "Development"
default_role: "member"
groups:
- "smartlink-developers"
boards:
- "Sprint Planning"
- "Bug Tracking"
- "Feature Requests"
- name: "Management"
default_role: "viewer"
groups:
- "smartlink-executives"
boards:
- "Company OKRs"
- "Financial Reports"
Permissions et rôles
| Rôle | Permissions |
|---|---|
| Owner | Contrôle total du compte |
| Admin | Gestion des utilisateurs et paramètres |
| Member | Création et édition de contenu |
| Viewer | Lecture seule |
| Guest | Accès limité à certains boards |
Configuration SCIM
Pour la synchronisation automatique des utilisateurs :
{
"scim_endpoint": "https://[votre-compte].monday.com/scim/v2",
"scim_token": "Bearer xxxxxx",
"provisioning": {
"create_users": true,
"update_users": true,
"deactivate_users": true,
"sync_groups": true
}
}
Automatisations avec SSO
Création automatique de boards
// Automation pour créer des boards selon les groupes
const mondaySDK = require('monday-sdk-js');
const monday = mondaySDK();
async function createBoardForGroup(groupName, userEmail) {
const boardTemplate = {
'smartlink-sales': 'sales-pipeline-template',
'smartlink-marketing': 'marketing-campaign-template',
'smartlink-dev': 'sprint-board-template'
};
if (boardTemplate[groupName]) {
const board = await monday.api(`
mutation {
duplicate_board(
board_id: ${boardTemplate[groupName]},
board_name: "${groupName} Workspace",
owner_ids: [${userEmail}]
) {
id
}
}
`);
return board;
}
}
Workflows basés sur l'authentification
automation:
- trigger: "user_login_sso"
conditions:
- first_login: true
- group: "smartlink-new-employees"
actions:
- create_board: "onboarding_template"
- assign_to_team: "hr_team"
- send_notification: "welcome_message"
- add_to_board: "company_announcements"
Intégration avec l'API Monday.com
Configuration API avec SSO
const fetch = require('node-fetch');
class MondayAPIClient {
constructor(apiKey) {
this.apiKey = apiKey;
this.apiUrl = 'https://api.monday.com/v2';
}
async getUserBySSOEmail(email) {
const query = `
query {
users(emails: ["${email}"]) {
id
name
email
teams {
id
name
}
}
}
`;
const response = await fetch(this.apiUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': this.apiKey
},
body: JSON.stringify({ query })
});
return response.json();
}
}
Webhooks pour synchronisation
// Webhook pour synchroniser les changements SSO
app.post('/webhook/monday-sso', async (req, res) => {
const { event, userId, userEmail, groups } = req.body;
switch(event) {
case 'user.created':
await createUserWorkspace(userId, userEmail);
break;
case 'user.updated':
await updateUserPermissions(userId, groups);
break;
case 'user.deactivated':
await archiveUserContent(userId);
break;
}
res.status(200).send('OK');
});
Test de la configuration
1. Test de connexion
- Déconnectez-vous de Monday.com
- Allez sur
https://[votre-compte].monday.com - Cliquez sur Log in with SSO
- Entrez votre email d'entreprise
- Authentifiez-vous via SmartLink
- Vérifiez l'accès à Monday.com
2. Test des permissions
# Test via l'API
curl -X POST https://api.monday.com/v2 \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "{ me { name email teams { name } } }"}'
3. Test mobile
Les applications Monday.com supportent le SSO :
- Monday.com iOS/Android
- Monday.com Desktop (Windows/Mac)
Dépannage
Erreur "SAML assertion failed"
Problème : L'assertion SAML est rejetée
Solution :
- Vérifiez que l'Entity ID est
[appid] - Vérifiez le format NameID :
emailAddress - Assurez-vous que l'email existe dans Monday.com
- Vérifiez les logs : Administration → Activity Log
Erreur "User not authorized"
Problème : L'utilisateur ne peut pas accéder
Solution :
- Vérifiez que le domaine email est vérifié
- Assurez-vous que l'utilisateur est invité dans Monday.com
- Vérifiez les groupes SCIM si configurés
Les groupes ne sont pas synchronisés
Problème : Les teams Monday ne correspondent pas aux groupes SmartLink
Solution :
<!-- Format correct pour les groupes SAML -->
<saml:Attribute Name="groups">
<saml:AttributeValue>smartlink-monday-admins</saml:AttributeValue>
<saml:AttributeValue>smartlink-monday-users</saml:AttributeValue>
</saml:Attribute>
Problème avec les automations
Problème : Les automations ne se déclenchent pas pour les utilisateurs SSO
Solution :
- Vérifiez que l'utilisateur a les permissions nécessaires
- Assurez-vous que l'automation est activée pour "All users"
- Testez avec un compte non-SSO pour isoler le problème
Sécurité
Configuration recommandée
{
"security_settings": {
"enforce_sso": true,
"session_duration": "8h",
"ip_restrictions": {
"enabled": true,
"whitelist": ["10.0.0.0/8", "192.168.0.0/16"]
},
"2fa_backup": true,
"audit_retention": "365d",
"api_token_expiry": "90d",
"guest_restrictions": {
"disable_export": true,
"disable_api_access": true,
"view_only": true
}
}
}
Conformité
- SOC 2 Type II : Certifié
- ISO 27001 : Certifié
- GDPR : Conforme avec DPA disponible
- HIPAA : Conforme (plan Enterprise+)
Migration des utilisateurs
Script de migration
import requests
import csv
from datetime import datetime
class MondaySSOMigration:
def __init__(self, api_key, account_id):
self.api_key = api_key
self.account_id = account_id
self.api_url = "https://api.monday.com/v2"
def migrate_users(self, csv_file):
"""Migrer les utilisateurs vers SSO"""
with open(csv_file, 'r') as file:
reader = csv.DictReader(file)
results = []
for user in reader:
result = self.migrate_single_user(user)
results.append(result)
return results
def migrate_single_user(self, user):
# Désactiver l'auth par mot de passe
# Envoyer invitation SSO
# Logger le résultat
pass