Zum Hauptinhalt springen

Whaller

Dieser Leitfaden erklärt Ihnen, wie Sie die Einzelanmeldung (SSO) zwischen SmartLink und Whaller unter Verwendung von SAML 2.0 konfigurieren.

Voraussetzungen

  • Whaller Business- oder Enterprise-Abonnement
  • Administrativer Zugriff auf Whaller
  • Verifizierte E-Mail-Domain in Whaller
  • Anwendung in SmartLink mit SAML2 konfiguriert

Hinweis: SSO ist nur mit den Business- und Enterprise-Plänen von Whaller 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: Whaller
    • URL: https://[your-organization].whaller.com
    • Beschreibung: Sicheres Unternehmens-Soziales Netzwerk
    • Symbol: Wählen Sie das Whaller-Symbol aus

2. SAML2 konfigurieren

  1. Im Tab Authentifizierung
  2. Wählen Sie SAML2
  3. Konfigurieren Sie die folgenden Parameter:
    • Entitäts-ID: [appid]
    • ACS-URL: https://[your-organization].whaller.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
  • Entitäts-ID: [appid]
  • X.509-Zertifikat: Herunterladen von SmartLink

Konfiguration in Whaller

1. Zugriff auf SSO-Einstellungen

  1. Melden Sie sich als Administrator bei Whaller an
  2. Gehen Sie zu VerwaltungEinstellungenAuthentifizierung
  3. Klicken Sie im Abschnitt SSO SAML auf Konfigurieren

2. Konfiguration des Identitätsanbieters

Konfigurieren Sie die SAML-Parameter:

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

3. Attributkonfiguration

Whaller-AttributSAML-AttributErforderlich
E-Mailemail
VornamefirstName
NachnamelastName
AnzeigenamedisplayName
Servicedepartment
Funktiontitle
Managermanager
Standortlocation

4. Domainkonfiguration

  1. In Zugelassene Domains
  2. Fügen Sie Ihre Unternehmensdomains hinzu
  3. Aktivieren Sie SSO erzwingen für diese Domains

Konfiguration von Sphären und Berechtigungen

Arten von Sphären

spheres:
- type: "corporate"
name: "Unternehmen"
Sichtbarkeit: "öffentlich"
auto_add_users: true
Moderation: true
Funktionen:
- Neuigkeiten
- Veranstaltungen
- Dokumente
- Nachrichten

- type: "project"
name: "Projekte"
Sichtbarkeit: "privat"
Nur auf Einladung: true
Funktionen:
- Aufgaben
- Kalender
- Dokumente
- Chat

- type: "community"
name: "Gemeinschaften"
Sichtbarkeit: "entdeckbar"
Beitrittszustimmung: true
Funktionen:
- Diskussionen
- Umfragen
- Ideen
- Wiki

Rollen und Berechtigungen

{
"Rollen": {
"admin": {
"Berechtigungen": [
"Sphären verwalten",
"Benutzer verwalten",
"Einstellungen verwalten",
"Analysen anzeigen",
"Daten exportieren"
],
"saml_groups": ["smartlink-whaller-admins"]
},
"Manager": {
"Berechtigungen": [
"Sphären erstellen",
"Inhalte moderieren",
"Benutzer einladen",
"Sphären-Einstellungen verwalten"
],
"saml_groups": ["smartlink-managers"]
},
"Mitwirkender": {
"Berechtigungen": [
"Inhalte erstellen",
"Kommentieren",
"Teilen",
"Dateien hochladen"
],
"saml_groups": ["smartlink-users"]
},
"Leser": {
"Berechtigungen": [
"Inhalte anzeigen",
"Reagieren",
"Dateien herunterladen"
],
"saml_groups": ["smartlink-external", "smartlink-guests"]
}
}
}

Gruppensynchronisierung

<!-- SAML-Assertion für Gruppen -->
<saml:Attribute Name="groups">
<saml:AttributeValue>smartlink-whaller-admins</saml:AttributeValue>
<saml:AttributeValue>smartlink-department-hr</saml:AttributeValue>
<saml:AttributeValue>smartlink-project-alpha</saml:AttributeValue>
</saml:Attribute>

Spezifische Funktionen

Sicherheit und Datenschutz

{
"Sicherheitsfunktionen": {
"Verschlüsselung": {
"Ruhezustand": "AES-256",
"In Transit": "TLS 1.3",
"End-to-End": true
},
"Datensouveränität": {
"Hosting": "Frankreich",
"Kein Zugriff von Drittanbietern": true,
"GDPR-konform": true
},
"Inhaltskontrolle": {
"Wasserzeichen": true,
"Download-Beschränkungen": true,
"Kopierschutz": false,
"Ablaufender Inhalt": true
},
"Audit": {
"Zugriffsprotokolle": true,
"Aktivitätsverfolgung": true,
"Exportprotokolle": true
}
}
}

Dokumentenverwaltung

Dokumente:
Speicher:
Quota pro Sphäre: "50GB"
Quota pro Benutzer: "10GB"
Maximale Dateigröße: "2GB"

Versionierung:
Aktiviert: true
Maximale Versionen: 10
Automatische Bereinigung: "nach_90_Tagen"

Zusammenarbeit:
Co-Bearbeitung: true
Kommentieren: true
Genehmigungsworkflow: true

Unterstützte Formate:
- Dokumente: [".pdf", ".doc", ".docx", ".odt"]
- Tabellenkalkulationen: [".xls", ".xlsx", ".ods"]
- Präsentationen: [".ppt", ".pptx", ".odp"]
- Bilder: [".jpg", ".png", ".gif", ".svg"]
- Videos: [".mp4", ".avi", ".mov"]

Analytik und Berichterstattung

{
"Analytik": {
"Dashboard": {
"Aktive Benutzer": "täglich/wöchentlich/monatlich",
"Inhalts-Erstellung": "Beiträge/Kommentare/Dateien",
"Engagement-Rate": "Ansichten/Interaktionen",
"Sphären-Aktivität": "Pro-Sphäre-Metriken"
},
"Berichte": {
"Benutzeraktivität": {
"Frequenz": "wöchentlich",
"Format": "pdf",
"Empfänger": ["Admins"]
},
"Inhaltsmoderation": {
"Frequenz": "täglich",
"Auto-Flag": true,
"KI-Unterstützung": true
},
"Compliance": {
"GDPR-Bericht": "monatlich",
"Audit-Trail": "kontinuierlich",
"Datenretention": "automatisiert"
}
}
}
}

Whaller API

Client-API mit SSO-Authentifizierung

import requests
from datetime import datetime

class WhallerAPI:
def __init__(self, domain, api_key):
self.base_url = f"https://{domain}.whaller.com/api/v2"
self.headers = {
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
}

def get_user_by_sso_email(self, email):
"""Holt einen Benutzer anhand seiner SSO-E-Mail"""
response = requests.get(
f"{self.base_url}/users",
params={'email': email},
headers=self.headers
)
return response.json()

def create_sphere(self, name, sphere_type, members):
"""Erstellt eine neue Sphäre"""
data = {
'name': name,
'type': sphere_type,
'members': members,
'settings': {
'moderation': True,
'invitation_only': False
}
}
response = requests.post(
f"{self.base_url}/spheres",
json=data,
headers=self.headers
)
return response.json()

def post_message(self, sphere_id, content, attachments=None):
"""Veröffentlicht eine Nachricht in einer Sphäre"""
data = {
'content': content,
'attachments': attachments or [],
'visibility': 'all_members'
}
response = requests.post(
f"{self.base_url}/spheres/{sphere_id}/messages",
json=data,
headers=self.headers
)
return response.json()

Webhooks

// Konfiguration der Whaller-Webhooks
app.post('/webhook/whaller', async (req, res) => {
const { event, data } = req.body;
const signature = req.headers['x-whaller-signature'];

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

switch(event) {
case 'user.created':
await handleNewUser(data);
break;

case 'sphere.created':
await syncSphereToExternalTools(data);
break;

case 'message.posted':
await processNewMessage(data);
break;

case 'document.uploaded':
await scanDocument(data);
break;

case 'user.deactivated':
await handleUserDeactivation(data);
break;
}

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

Konfigurationstest

1. Verbindungstest

  1. Melden Sie sich von Whaller ab
  2. Gehen Sie zu https://[your-organization].whaller.com
  3. Klicken Sie auf SSO-Anmeldung
  4. Geben Sie Ihre Unternehmens-E-Mail ein
  5. Sie werden zu SmartLink weitergeleitet
  6. Nach der Authentifizierung gelangen Sie zu Whaller

2. Berechtigungsüberprüfung

# Test über die API
curl -X GET "https://[your-organization].whaller.com/api/v2/me" \
-H "Authorization: Bearer YOUR_API_TOKEN"

3. Mobile Test

Verfügbare Whaller-Apps:

  • Whaller iOS (App Store)
  • Whaller Android (Google Play)
  • Vollständige SSO-Unterstützung auf Mobilgeräten

Fehlerbehebung

Fehler "Ungültige SAML-Aussage"

Problem: Die SAML-Aussage wird abgelehnt

Lösung:

  1. Stellen Sie sicher, dass die Entitäts-ID korrekt ist [appid]
  2. Überprüfen Sie das Format des X.509-Zertifikats
  3. Stellen Sie sicher, dass die ACS-URL lautet: https://[your-organization].whaller.com/saml/acs
  4. Überprüfen Sie die Protokolle: VerwaltungProtokolleSSO

Benutzer werden nicht automatisch erstellt

Problem: Die automatische Bereitstellung funktioniert nicht

Lösung:

  1. Überprüfen Sie, ob die automatische Bereitstellung in Whaller aktiviert ist
  2. Stellen Sie sicher, dass die obligatorischen Attribute vorhanden sind:
    • email
    • firstName
    • lastName
  3. Überprüfen Sie, ob die E-Mail-Domain autorisiert ist

Zugriffsproblem auf Sphären

Problem: Der SSO-Benutzer hat keinen Zugriff auf die richtigen Sphären

Lösung:

  1. Überprüfen Sie die Synchronisation der SAML-Gruppen
  2. Überprüfen Sie die Regeln für die automatische Zuweisung
  3. Überprüfen Sie die Berechtigungen der Sphäre
  4. Stellen Sie sicher, dass der Benutzer aktiv ist

Zeitüberschreitungsfehler

Problem: Die SSO-Verbindung läuft zu schnell ab

Lösung:

  1. Erhöhen Sie die Gültigkeitsdauer der SAML-Aussage (5-10 Minuten)
  2. Überprüfen Sie die Uhrzeitsynchronisation zwischen den Servern
  3. Konfigurieren Sie den Parameter ClockSkew in Whaller

Sicherheit

Empfohlene Konfiguration

{
"Sicherheitseinstellungen": {
"SSO erzwingen": true,
"Sitzungsdauer": "8h",
"Inaktivitäts-Timeout": "30m",
"IP-Filterung": {
"aktiviert": false,
"Whitelist": []
},
"Passwortrichtlinie": {
"Mindestlänge": 12,
"Sonderzeichen erforderlich": true,
"Zahlen erforderlich": true,
"Rotation": "90d"
},
"Datenschutz": {
"Verschlüsselung": "AES-256",
"Schlüsselverwaltung": "HSM",
"Backup": "täglich",
"Aufbewahrung": "7y"
}
}
}

Konformität

  • DSGVO: Vollständig konform, Hosting in Frankreich
  • SecNumCloud: Qualifizierung läuft
  • ISO 27001: Zertifiziert
  • HDS: Zertifizierter Gesundheitsdaten-Hoster

Migration der Benutzer

Migrations-Skript

import csv
from whaller_api import WhallerAPI
import logging

class WhallerSSOMigration:
def __init__(self, domain, api_key):
self.api = WhallerAPI(domain, api_key)
self.logger = logging.getLogger(__name__)

def migrate_users(self, csv_file):
"""Migriert Benutzer zu SSO"""
results = []

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

for user in reader:
try:
# Benutzer suchen
existing_user = self.api.get_user_by_email(user['email'])

if existing_user:
# SSO aktivieren
self.api.enable_sso(existing_user['id'])

# Gruppen aktualisieren
self.api.update_user_groups(
existing_user['id'],
user['groups'].split(',')
)

results.append({
'email': user['email'],
'status': 'migrated'
})
else:
# Mit SSO erstellen
self.api.create_sso_user(user)
results.append({
'email': user['email'],
'status': 'created'
})

except Exception as e:
self.logger.error(f"Fehler bei Migration {user['email']}: {e}")
results.append({
'email': user['email'],
'status': 'error',
'message': str(e)
})

return results

Ressourcen