Talkspirit
Ce guide vous explique comment configurer l'authentification unique (SSO) entre SmartLink et Talkspirit en utilisant SAML 2.0 ou OpenID Connect.
Prérequis
- Abonnement Talkspirit Business ou Enterprise
- Accès administrateur à Talkspirit
- Domaine email vérifié
- Application configurée dans SmartLink avec SAML2 ou OpenID Connect
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 : Talkspirit
- URL :
https://[votre-organisation].talkspirit.com - Description : Plateforme collaborative française tout-en-un
- Icône : Choisissez l'icône Talkspirit
2. Configurer SAML2
- Dans l'onglet Authentification
- Sélectionnez SAML2
- Configurez les paramètres suivants :
- Entity ID :
[appid] - ACS URL :
https://[votre-organisation].talkspirit.com/saml/acs - Format NameID :
emailAddress - App ID :
https://[votre-smartlink].link.vaultys.org/[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/[appid]/sso - SLO URL :
https://[votre-smartlink].link.vaultys.org/api/saml/[appid]/slo - Entity ID :
[appid] - Certificat X.509 : Téléchargez depuis SmartLink
Configuration dans Talkspirit
1. Accéder aux paramètres SSO
- Connectez-vous à Talkspirit en tant qu'administrateur
- Allez dans Administration → Paramètres → Authentification
- Cliquez sur Configurer le SSO SAML
2. Configuration du fournisseur d'identité
Configurez les paramètres SAML :
- IdP Entity ID :
[appid] - SSO URL :
https://[votre-smartlink].link.vaultys.org/api/saml2/[appid]/sso - SLO URL :
https://[votre-smartlink].link.vaultys.org/api/saml2/[appid]/slo - Certificat public : Collez le certificat X.509 depuis SmartLink
- Binding :
HTTP-POST
3. Configuration des attributs
| Attribut Talkspirit | Attribut SAML | Obligatoire |
|---|---|---|
email | ✅ | |
| Prénom | firstName | ✅ |
| Nom | lastName | ✅ |
| Nom complet | displayName | ❌ |
| Service | department | ❌ |
| Fonction | jobTitle | ❌ |
| Téléphone | phone | ❌ |
| Photo | photo | ❌ |
Configuration avec OpenID Connect
Configuration dans SmartLink
1. Configurer OpenID Connect
- Dans l'application Talkspirit
- Onglet Authentification → OpenID Connect
- Notez :
- Client ID :
talkspirit-xxxxxx - Client Secret :
secret-xxxxxx - App ID :
[appid]
- Client ID :
2. URLs de redirection
Ajoutez dans URLs de redirection autorisées :
https://[votre-organisation].talkspirit.com/auth/oidc/callback
https://[votre-organisation].talkspirit.com/api/auth/oidc/callback
Configuration dans Talkspirit
- Dans Administration → Authentification → OpenID Connect
- Configurez :
- Discovery URL :
https://[votre-smartlink].link.vaultys.org/api/oidc/[appid]/.well-known/openid-configuration - Client ID :
talkspirit-xxxxxx - Client Secret :
secret-xxxxxx - Scopes :
openid profile email groups
Configuration des espaces et groupes
Structure organisationnelle
spaces:
- name: "Direction"
type: "private"
auto_add_groups:
- "smartlink-executives"
- "smartlink-management"
features:
- chat
- videoconference
- documents
- tasks
- name: "Communication"
type: "public"
auto_add_groups:
- "smartlink-all-users"
features:
- news
- events
- polls
- name: "Projets"
type: "workspace"
auto_add_groups:
- "smartlink-project-teams"
features:
- tasks
- calendar
- documents
- wiki
Synchronisation des groupes
{
"group_sync": {
"enabled": true,
"mapping": {
"smartlink-admins": {
"talkspirit_role": "admin",
"permissions": ["manage_users", "manage_spaces", "manage_settings"]
},
"smartlink-managers": {
"talkspirit_role": "manager",
"permissions": ["create_spaces", "moderate_content", "manage_members"]
},
"smartlink-users": {
"talkspirit_role": "member",
"permissions": ["create_content", "join_spaces", "use_chat"]
},
"smartlink-external": {
"talkspirit_role": "guest",
"permissions": ["view_public", "limited_interaction"]
}
}
}
}
Fonctionnalités spécifiques
Chat et visioconférence
communication:
chat:
enabled: true
direct_messages: true
group_chats: true
file_sharing: true
max_file_size: "100MB"
message_retention: "unlimited"
video:
provider: "integrated"
max_participants: 50
recording: true
screen_sharing: true
virtual_backgrounds: true
breakout_rooms: true
Drive et gestion documentaire
{
"drive_settings": {
"enabled": true,
"default_quota": "10GB",
"versioning": true,
"co_editing": true,
"office_integration": "onlyoffice",
"file_types_allowed": [
".pdf", ".doc", ".docx", ".xls", ".xlsx",
".ppt", ".pptx", ".png", ".jpg", ".mp4"
],
"antivirus_scan": true,
"encryption_at_rest": true
}
}
Publication et actualités
publishing:
news_feed:
moderation: true
categories:
- "Entreprise"
- "RH"
- "Produits"
- "Événements"
engagement:
reactions: ["like", "love", "applause", "idea"]
comments: true
sharing: true
mentions: true
hashtags: true
Intégration avec les outils externes
Microsoft 365
{
"microsoft_integration": {
"enabled": true,
"calendar_sync": true,
"contacts_sync": true,
"onedrive_connector": true,
"teams_interop": false
}
}
Google Workspace
{
"google_integration": {
"enabled": true,
"calendar_sync": true,
"drive_connector": true,
"meet_integration": true
}
}
API Talkspirit
Authentification API avec SSO
const TalkspiritAPI = require('talkspirit-api');
class TalkspiritClient {
constructor(config) {
this.api = new TalkspiritAPI({
baseUrl: config.baseUrl,
auth: {
type: 'oauth2',
clientId: config.clientId,
clientSecret: config.clientSecret,
scope: 'read write admin'
}
});
}
async getUserBySSOEmail(email) {
return await this.api.users.findByEmail(email);
}
async createSpace(spaceData) {
return await this.api.spaces.create({
name: spaceData.name,
type: spaceData.type,
members: spaceData.members,
features: spaceData.features
});
}
async postNews(newsData) {
return await this.api.news.create({
title: newsData.title,
content: newsData.content,
category: newsData.category,
targetGroups: newsData.groups
});
}
}
Webhooks
// Endpoint pour recevoir les webhooks Talkspirit
app.post('/webhook/talkspirit', async (req, res) => {
const { event, data } = req.body;
switch(event) {
case 'user.joined':
await onboardNewUser(data);
break;
case 'space.created':
await syncSpaceToOtherTools(data);
break;
case 'document.shared':
await notifyRelevantUsers(data);
break;
case 'task.assigned':
await createExternalTask(data);
break;
}
res.status(200).json({ received: true });
});
Test de la configuration
1. Test de connexion
- Déconnectez-vous de Talkspirit
- Allez sur
https://[votre-organisation].talkspirit.com - Cliquez sur Se connecter avec SSO
- Authentifiez-vous via SmartLink
- Vérifiez l'accès aux espaces assignés
2. Test des permissions
# Test via l'API
curl -X GET "https://[votre-organisation].talkspirit.com/api/v1/me" \
-H "Authorization: Bearer YOUR_TOKEN"
3. Test mobile
Les applications Talkspirit supportent le SSO :
- Talkspirit iOS
- Talkspirit Android
- Talkspirit Desktop (Windows/Mac/Linux)
Dépannage
Erreur "SAML response invalid"
Problème : La réponse SAML n'est pas acceptée
Solution :
- Vérifiez que l'Entity ID est
[appid] - Vérifiez le certificat X.509
- Assurez-vous que l'ACS URL est correcte
- Consultez les logs : Administration → Logs → Authentification
Les groupes ne sont pas synchronisés
Problème : Les utilisateurs n'ont pas les bons rôles
Solution :
<!-- Assertion SAML pour les groupes -->
<saml:Attribute Name="groups">
<saml:AttributeValue>smartlink-talkspirit-admins</saml:AttributeValue>
<saml:AttributeValue>smartlink-talkspirit-users</saml:AttributeValue>
</saml:Attribute>
Problème d'accès aux espaces
Problème : L'utilisateur SSO n'a pas accès aux espaces
Solution :
- Vérifiez la synchronisation des groupes
- Contrôlez les règles d'affectation automatique
- Vérifiez les permissions de l'espace
- Assurez-vous que l'utilisateur est actif
Sécurité
Configuration recommandée
{
"security_settings": {
"enforce_sso": true,
"session_timeout": "8h",
"ip_filtering": false,
"device_trust": true,
"content_moderation": {
"enabled": true,
"ai_powered": true,
"manual_review": true
},
"data_retention": {
"messages": "2y",
"files": "5y",
"logs": "1y"
},
"encryption": {
"at_rest": true,
"in_transit": true,
"e2e_chat": false
}
}
}
Conformité RGPD
Talkspirit est conforme RGPD avec :
- Hébergement des données en France
- Droit à l'effacement
- Portabilité des données
- Consentement explicite
- Registre des traitements
Migration des utilisateurs
Script de migration
import csv
import requests
class TalkspiritMigration:
def __init__(self, api_key, domain):
self.api_key = api_key
self.base_url = f"https://{domain}.talkspirit.com/api/v1"
def migrate_users_to_sso(self, csv_file):
"""Migration des utilisateurs vers SSO"""
with open(csv_file, 'r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for user in reader:
# Activer SSO pour l'utilisateur
self.enable_sso_for_user(user['email'])
# Affecter aux espaces
self.assign_user_to_spaces(user['email'], user['spaces'])
# Envoyer notification
self.send_migration_email(user['email'])
def enable_sso_for_user(self, email):
"""Active le SSO pour un utilisateur"""
response = requests.patch(
f"{self.base_url}/users/email/{email}",
headers={"Authorization": f"Bearer {self.api_key}"},
json={"auth_method": "sso"}
)
return response.json()