Aller au contenu principal

HubSpot

Ce guide vous explique comment configurer l'authentification unique (SSO) entre VaultysHub et HubSpot en utilisant SAML 2.0.

Prérequis​

  • HubSpot Enterprise (Marketing Hub, Sales Hub, Service Hub ou CMS Hub)
  • Accès Super Admin à HubSpot
  • Domaine email vérifié dans HubSpot
  • Application configurée dans VaultysHub avec SAML2

Note : Le SSO SAML est disponible uniquement avec les plans Enterprise de HubSpot.

Configuration dans VaultysHub​

1. Créer l'application​

  1. Connectez-vous à VaultysHub en tant qu'administrateur
  2. Allez dans Applications → Ajouter
  3. Créez une nouvelle application :
    • Nom : HubSpot
    • URL : https://app.hubspot.com
    • Description : Plateforme CRM et marketing automation
    • Icône : Choisissez l'icône HubSpot

2. Configurer SAML2​

  1. Dans l'onglet Authentification
  2. Sélectionnez SAML2
  3. Configurez les paramètres suivants :
    • Entity ID : l'Entity ID du Service Provider fourni par HubSpot (et non l'URL de VaultysHub)
    • ACS URL : https://app.hubspot.com/login/saml
    • Format NameID : emailAddress
    • App ID : [appid] (identifiant unique généré automatiquement)

3. Récupérer les métadonnées​

Notez les URLs suivantes :

  • Métadonnées IdP : https://[votre-smartlink].link.vaultys.org/api/saml2/metadata/[appid]
  • SSO URL : https://[votre-smartlink].link.vaultys.org/api/saml2/sso/[appid]
  • Entity ID : https://[votre-smartlink].link.vaultys.org/[appid]
  • Certificat X.509 : Téléchargez depuis VaultysHub

La déconnexion unique (Single Logout) depuis VaultysHub n'est pas prise en charge.

Configuration dans HubSpot​

1. Accéder aux paramètres SSO​

  1. Connectez-vous à HubSpot en tant que Super Admin
  2. Cliquez sur l'icône Paramètres (⚙️)
  3. Dans le menu de gauche : Account Defaults → Security
  4. Cliquez sur l'onglet Single Sign-On

2. Configuration du fournisseur d'identité​

Cliquez sur Configure SSO et remplissez :

Identity Provider Settings​

  • Identity Provider Single Sign-On URL : https://[votre-smartlink].link.vaultys.org/api/saml2/sso/[appid]
  • Identity Provider Identifier : https://[votre-smartlink].link.vaultys.org/[appid]
  • Verification Certificate : Collez le certificat X.509 depuis VaultysHub

Service Provider Settings (fourni par HubSpot)​

Notez ces valeurs pour les configurer dans VaultysHub si nécessaire :

  • Audience URI (SP Entity ID) : https://api.hubspot.com
  • Sign on URL : https://app.hubspot.com/login/saml

3. Configuration des attributs​

Configurez le mapping des attributs SAML :

Attribut HubSpotAttribut SAMLObligatoire
Emailemail✅
First NamefirstName✅
Last NamelastName✅

4. Configuration des domaines​

  1. Dans Security → Login Verification
  2. Ajoutez vos domaines d'entreprise
  3. Activez Require SSO pour ces domaines

Configuration des équipes et permissions​

Structure des équipes​

VaultysHub ne transmet pas les groupes de l'utilisateur : les équipes et les permissions sont attribuées directement dans HubSpot (Settings → Users & Teams).

Rôles personnalisés​

Créez des rôles dans HubSpot :

  1. Settings → Users & Teams → Roles
  2. Créez les rôles dont vous avez besoin
  3. Assignez les permissions appropriées

Partitions (HubSpot Enterprise)​

Pour isoler les données entre équipes :

partitions:
- name: "EMEA Sales"
teams: ["sales-emea"]
objects: ["contacts", "companies", "deals"]

- name: "Americas Sales"
teams: ["sales-americas"]
objects: ["contacts", "companies", "deals"]

- name: "Marketing Global"
teams: ["marketing"]
objects: ["marketing-emails", "workflows", "forms"]

Test de la configuration​

1. Test de connexion​

  1. Ouvrez une fenêtre de navigation privée
  2. Allez sur app.hubspot.com
  3. Cliquez sur Log in with SSO
  4. Entrez votre email d'entreprise
  5. Vous êtes redirigé vers VaultysHub
  6. Après authentification, vous accédez à HubSpot

2. Test des permissions​

// Test via l'API HubSpot
const hubspot = require('@hubspot/api-client');

const hubspotClient = new hubspot.Client({
accessToken: process.env.HUBSPOT_ACCESS_TOKEN
});

async function testPermissions() {
try {
// Test lecture contacts
const contacts = await hubspotClient.crm.contacts.basicApi.getPage();
console.log('Contacts access: ✓');

// Test création deal
const deal = await hubspotClient.crm.deals.basicApi.create({
properties: {
dealname: 'Test SSO Deal',
amount: '1000'
}
});
console.log('Deal creation: ✓');
} catch (error) {
console.error('Permission denied:', error.message);
}
}

3. Vérification mobile​

Les applications mobiles HubSpot supportent le SSO :

  • HubSpot Mobile App
  • HubSpot Keyboard (iOS)
  • HubSpot CRM Scanner

Intégration avec les workflows​

Déclencheurs basés sur l'authentification​

// Workflow personnalisé déclenché à la connexion SSO
{
"trigger": {
"type": "user_login",
"conditions": {
"auth_method": "saml"
}
},
"actions": [
{
"type": "send_email",
"template": "welcome_sso_user",
"to": "{{user.email}}"
},
{
"type": "assign_onboarding_tasks",
"tasks": ["complete_profile", "watch_training", "setup_signature"]
}
]
}

Configuration des intégrations​

HubSpot App Marketplace​

Les apps du marketplace fonctionnent avec SSO :

{
"marketplace_apps": {
"salesforce": {
"sso_compatible": true,
"additional_auth": "oauth2"
},
"slack": {
"sso_compatible": true,
"workspace_linking": true
},
"zoom": {
"sso_compatible": true,
"calendar_sync": true
}
}
}

Webhooks et API​

Configuration des webhooks avec authentification SSO :

// Webhook endpoint sécurisé
app.post('/webhooks/hubspot', verifyHubSpotSignature, async (req, res) => {
const { subscriptionType, objectId, propertyName, propertyValue } = req.body;

// Vérifier que l'utilisateur a les permissions via SSO
const user = await getUserFromWebhook(req);
if (!hasPermission(user, subscriptionType)) {
return res.status(403).json({ error: 'Insufficient permissions' });
}

// Traiter le webhook
await processWebhook(req.body);
res.status(200).send();
});

Dépannage​

Erreur "Invalid SAML Response"​

Problème : La réponse SAML n'est pas valide

Solution :

  1. Vérifiez que l'Entity ID est bien https://[votre-smartlink].link.vaultys.org/[appid] dans VaultysHub
  2. Vérifiez le certificat X.509 (format PEM, sans header/footer)
  3. Assurez-vous que l'ACS URL est : https://app.hubspot.com/login/saml
  4. Vérifiez les logs dans HubSpot : Settings → Audit Logs

Erreur "User not authorized for this account"​

Problème : L'utilisateur n'a pas accès au compte HubSpot

Solution :

  1. Vérifiez que le domaine email est ajouté et vérifié
  2. Assurez-vous que l'utilisateur est provisionné dans HubSpot
  3. Vérifiez les permissions de l'utilisateur dans Users & Teams

Les équipes ne sont pas assignées​

Problème : Les utilisateurs ne sont pas dans les bonnes équipes

Solution : VaultysHub ne transmet pas les groupes dans l'assertion SAML. Assignez les utilisateurs aux équipes directement dans HubSpot (Settings → Users & Teams).

Problème avec les applications mobiles​

Problème : Impossible de se connecter via l'app mobile

Solution :

  1. Assurez-vous que l'option Allow mobile SSO est activée
  2. Utilisez le navigateur intégré de l'app, pas un navigateur externe
  3. Vérifiez que le certificat SSL est valide et reconnu

Sécurité​

Configuration recommandée​

{
"security_settings": {
"enforce_sso": true,
"session_timeout": "12h",
"require_2fa_for_api": true,
"ip_restrictions": {
"enabled": true,
"allowed_ips": ["203.0.113.0/24"]
},
"api_key_rotation": "90d",
"audit_log_retention": "2y",
"sensitive_data_masking": true
}
}

Conformité​

  • GDPR : HubSpot est conforme GDPR avec DPA disponible
  • SOC 2 Type II : Certification disponible
  • ISO 27001 : Certifié
  • Privacy Shield : Framework EU-US/Swiss-US

Backup et récupération​

Plan de récupération en cas de problème SSO :

  1. Compte Super Admin de secours avec authentification locale
  2. API keys pour accès programmatique d'urgence
  3. Documentation des procédures de récupération
  4. Contact support HubSpot Enterprise : support prioritaire 24/7

Migration des utilisateurs​

Script de migration batch​

import pandas as pd
from hubspot import HubSpot
from datetime import datetime

def migrate_users_to_sso(csv_file):
"""Migration en masse vers SSO"""
api_client = HubSpot(access_token=ADMIN_TOKEN)
users_df = pd.read_csv(csv_file)

migration_report = []

for index, user in users_df.iterrows():
try:
# Désactiver l'auth par mot de passe
api_client.settings.users.update(
user_id=user['user_id'],
properties={
'authentication_method': 'saml_only',
'password_login_enabled': False
}
)

# Envoyer notification
send_migration_email(user['email'])

migration_report.append({
'user': user['email'],
'status': 'success',
'timestamp': datetime.now()
})

except Exception as e:
migration_report.append({
'user': user['email'],
'status': 'failed',
'error': str(e)
})

return pd.DataFrame(migration_report)

Ressources​