Zum Hauptinhalt springen

Jamespot

Dieser Leitfaden erklärt, wie man die Single Sign-On (SSO)-Authentifizierung zwischen SmartLink und Jamespot unter Verwendung von SAML 2.0 konfiguriert.

Voraussetzungen

  • Jamespot Pro- oder Enterprise-Abonnement
  • Administratorzugriff auf Jamespot
  • Überprüfte E-Mail-Domain
  • Anwendung in SmartLink mit SAML2 konfiguriert

Hinweis: SSO ist mit den Angeboten Jamespot Pro und Enterprise verfügbar.

1. Anwendung erstellen

  1. Melden Sie sich als Administrator bei SmartLink an
  2. Gehen Sie zu AnwendungenHinzufügen
  3. Erstellen Sie eine neue Anwendung:
    • Name: Jamespot
    • URL: https://[your-organization].jamespot.com
    • Beschreibung: Digitale französische Arbeitsumgebung
    • Symbol: Wählen Sie das Jamespot-Symbol aus

2. SAML2 konfigurieren

  1. Im Tab Authentifizierung
  2. Wählen Sie SAML2
  3. Konfigurieren Sie die folgenden Parameter:
    • Entity ID: [appid]
    • ACS-URL: https://[your-organization].jamespot.com/saml/acs
    • Format NameID: emailAddress
    • App-ID: [appid] (automatisch generierte eindeutige Kennung)

3. Metadaten abrufen

Notieren Sie sich die folgenden URLs:

  • IdP-Metadaten: https://[your-smartlink].link.vaultys.org/api/saml2/[appid]/metadata
  • SSO-URL: https://[your-smartlink].link.vaultys.org/api/saml2/[appid]/sso
  • SLO-URL: https://[your-smartlink].link.vaultys.org/api/saml2/[appid]/slo
  • Entity ID: https://[your-smartlink].link.vaultys.org/[appid]
  • X.509-Zertifikat: Herunterladen von SmartLink

Konfiguration in Jamespot

1. Zugriff auf SSO-Einstellungen

  1. Melden Sie sich als Administrator bei Jamespot an
  2. Gehen Sie zu VerwaltungAllgemeine EinstellungenAuthentifizierung
  3. Klicken Sie auf SSO SAML konfigurieren

2. Konfiguration des Identitätsanbieters

Konfigurieren Sie die SAML-Parameter:

  • IdP-Entity-ID: [appid]
  • SSO-Login-URL: https://[your-smartlink].link.vaultys.org/api/saml2/[appid]/sso
  • SSO-Logout-URL: https://[your-smartlink].link.vaultys.org/api/saml2/[appid]/slo
  • Öffentlicher IdP-Zertifikat: Fügen Sie das X.509-Zertifikat von SmartLink ein
  • Binding: HTTP-POST

3. Attributkonfiguration

Jamespot-AttributSAML-AttributErforderlich
E-Mailemail
VornamegivenName
Nachnamesurname
Vollständiger NamedisplayName
Servicedepartment
FunktionjobTitle
TelefontelephoneNumber
Mobiltelefonmobile
Standortlocation

Konfiguration von Räumen und Gruppen

Raumstruktur

spaces:
- name: "Unternehmensraum"
type: "Organisation"
access: "Alle Benutzer"
features:
- Neuigkeiten
- Unternehmensverzeichnis
- Organigramm
- Ankündigungen

- name: "Projektraum"
type: "Projekt"
access: "Nur Mitglieder"
features:
- Aufgabenverwaltung
- Dokumentenaustausch
- Teamkalender
- Wikis

- name: "Innovationsraum"
type: "Community"
access: "Öffentlich"
features:
- Ideenbox
- Innovationswettbewerbe
- Umfragen
- Foren

Gruppensynchronisierung

{
"group_mapping": {
"smartlink-admins": {
"jamespot_role": "Administrator",
"permissions": ["Plattform verwalten", "Benutzer verwalten", "Inhalte verwalten"]
},
"smartlink-managers": {
"jamespot_role": "Raum-Manager",
"permissions": ["Räume erstellen", "Mitglieder verwalten", "Inhalte moderieren"]
},
"smartlink-employees": {
"jamespot_role": "Mitwirkender",
"permissions": ["Inhalte erstellen", "Teilnehmen", "Zusammenarbeiten"]
},
"smartlink-external": {
"jamespot_role": "Gast",
"permissions": ["Öffentlich anzeigen", "Eingeschränkte Interaktion"]
}
}
}

Module und Funktionen

Unternehmenssoziales Netzwerk

social_features:
wall:
enabled: true
moderation: automatic
content_types:
- Beiträge
- Artikel
- Veranstaltungen
- Umfragen
- Ideen

interactions:
likes: true
comments: true
shares: true
mentions: true
hashtags: true

gamification:
points: true
badges: true
leaderboard: true
challenges: true

Dokumentenverwaltung

{
"document_management": {
"storage_quota": "100GB",
"version_control": true,
"co_editing": {
"enabled": true,
"office_suite": "onlyoffice"
},
"permissions": {
"folder_level": true,
"file_level": true,
"sharing_control": true
},
"search": {
"full_text": true,
"ocr": true,
"metadata": true
}
}
}

Geschäftsanwendungen

business_apps:
- name: "Projektmanagement"
features:
- Gantt-Diagramme
- Kanban-Boards
- Zeiterfassung
- Ressourcenplanung

- name: "Wissensdatenbank"
features:
- Wikis
- FAQs
- Tutorials
- Best Practices

- name: "Innovation"
features:
- Ideenmanagement
- Innovationskampagnen
- Abstimmungssystem
- ROI-Verfolgung

Jamespot-API

Client-API mit SSO

const axios = require('axios');

class JamespotAPI {
constructor(config) {
this.baseUrl = `https://${config.domain}.jamespot.com/api/v3`;
this.apiKey = config.apiKey;
this.headers = {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json'
};
}

async getUserBySSOEmail(email) {
const response = await axios.get(`${this.baseUrl}/users`, {
params: { email },
headers: this.headers
});
return response.data;
}

async createSpace(spaceData) {
const response = await axios.post(`${this.baseUrl}/spaces`, {
name: spaceData.name,
type: spaceData.type,
description: spaceData.description,
members: spaceData.members,
settings: {
visibility: spaceData.visibility || 'private',
moderation: spaceData.moderation || true
}
}, { headers: this.headers });
return response.data;
}

async publishContent(spaceId, content) {
const response = await axios.post(`${this.baseUrl}/spaces/${spaceId}/posts`, {
title: content.title,
body: content.body,
type: content.type,
tags: content.tags,
attachments: content.attachments
}, { headers: this.headers });
return response.data;
}
}

Webhooks

// Endpunkt für Jamespot-Webhooks
app.post('/webhook/jamespot', async (req, res) => {
const { event, payload } = req.body;
const signature = req.headers['x-jamespot-signature'];

// Überprüfen der Signatur
if (!verifySignature(signature, req.body, process.env.JAMESPOT_WEBHOOK_SECRET)) {
return res.status(401).json({ error: 'Ungültige Signatur' });
}

switch(event) {
case 'user.login':
await trackUserLogin(payload);
break;

case 'content.created':
await processNewContent(payload);
break;

case 'space.member.added':
await notifyNewMember(payload);
break;

case 'task.completed':
await updateProjectStatus(payload);
break;
}

res.status(200).json({ received: true });
});

Konfigurationstest

1. Verbindungstest

  1. Melden Sie sich von Jamespot ab
  2. Gehen Sie zu https://[your-organization].jamespot.com
  3. Klicken Sie auf Mit SSO anmelden
  4. Authentifizieren Sie sich über SmartLink
  5. Überprüfen Sie den Zugriff auf Ihre Räume

2. API-Test

# Benutzerinformationen abrufen
curl -X GET "https://[your-organization].jamespot.com/api/v3/me" \
-H "Authorization: Bearer YOUR_API_KEY"

3. Mobiler Test

Verfügbare Jamespot-Anwendungen:

  • Jamespot Mobile (iOS/Android)
  • Vollständige Unterstützung von SSO
  • Push-Benachrichtigungen

Fehlerbehebung

Fehler "SAML-Antwort ist ungültig"

Problem: Die SAML-Antwort wird abgelehnt

Lösung:

  1. Stellen Sie sicher, dass die Entity-ID [appid] ist
  2. Überprüfen Sie das X.509-Zertifikat (PEM-Format)
  3. Stellen Sie sicher, dass die ACS-URL korrekt ist
  4. Überprüfen Sie die Protokolle: VerwaltungSystemprotokolle

Gruppen werden nicht synchronisiert

Problem: Die Jamespot-Rollen stimmen nicht mit den SmartLink-Gruppen überein

Lösung:

<!-- SAML-Assertion für Gruppen -->
<saml:Attribute Name="memberOf">
<saml:AttributeValue>CN=jamespot-admins,OU=Groups,DC=example,DC=com</saml:AttributeValue>
<saml:AttributeValue>CN=jamespot-users,OU=Groups,DC=example,DC=com</saml:AttributeValue>
</saml:Attribute>

Sitzungsproblem

Problem: Die Sitzung läuft zu schnell ab

Lösung:

  1. Erhöhen Sie die Sitzungsdauer in Jamespot
  2. Überprüfen Sie die Sitzungskonfiguration in SmartLink
  3. Passen Sie die Timeout-Einstellungen auf beiden Seiten an

Sicherheit

Empfohlene Konfiguration

{
"security_settings": {
"enforce_sso": true,
"session_timeout": "8h",
"concurrent_sessions": false,
"ip_restrictions": {
"enabled": false,
"whitelist": []
},
"content_security": {
"moderation": "ai_assisted",
"dlp": true,
"watermarking": false
},
"audit": {
"enabled": true,
"retention": "2y",
"export_format": "csv"
}
}
}

GDPR-Konformität

Jamespot ist GDPR-konform mit:

  • Datenhosting in Frankreich
  • Recht auf Löschung
  • Datenportabilität
  • Verarbeitungsverzeichnis
  • Benennung eines Datenschutzbeauftragten

Benutzermigration

Migrations-Skript

import csv
import requests
from datetime import datetime

class JamespotMigration:
def __init__(self, domain, api_key):
self.domain = domain
self.api_key = api_key
self.base_url = f"https://{domain}.jamespot.com/api/v3"

def migrate_to_sso(self, users_csv):
"""Migriere Benutzer zu SSO"""
results = []

with open(users_csv, 'r', encoding='utf-8') as file:
reader = csv.DictReader(file)

for user in reader:
try:
# Aktiviere SSO für den Benutzer
response = requests.patch(
f"{self.base_url}/users/{user['id']}",
headers={'Authorization': f'Bearer {self.api_key}'},
json={
'authentication_method': 'sso',
'sso_email': user['email']
}
)

if response.status_code == 200:
results.append({
'email': user['email'],
'status': 'Erfolgreich',
'timestamp': datetime.now()
})

# Sende Benachrichtigungs-E-Mail
self.send_notification(user['email'])
else:
results.append({
'email': user['email'],
'status': 'Fehlgeschlagen',
'error': response.text
})

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

return results

def send_notification(self, email):
"""Sende eine Benachrichtigungs-E-Mail für die SSO-Migration"""
# Implementiere den E-Mail-Versand
pass

Ressourcen