# SAML SSO

### App für SAML Single Sign-On

> Die SAML-SSO-App (Security Assertion Markup Language Single Sign-On) ermöglicht es Benutzern, sich bei BuildingPro Suites mit verschiedenen SAML-2.0-SSO-Anbietern anzumelden, einschließlich Microsoft ADFS. Diese Einrichtung vereinfacht die Authentifizierung durch die Verwendung eines einzigen Satzes von Anmeldedaten.

<figure><img src="https://3489494878-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9GvUpaatBiReR43XFSMg%2Fuploads%2F0g74ruaFeVT1pTVvb723%2Flogin.avif?alt=media&#x26;token=01602e03-385d-44af-ab52-269f262e1cfc" alt=""><figcaption></figcaption></figure>

#### Migration von ADFS zu SAML SSO

> **Hinweis:** Dieser Abschnitt ist nur relevant, wenn Sie zuvor die ADFS-App verwendet haben und auf BuildingPro Suites v13.2 oder neuer aktualisieren. Wenn Sie BuildingPro Suites zum ersten Mal installieren, können Sie diesen Abschnitt überspringen.

Vor BuildingPro Suites v13.2 wurde die „ADFS“-App für Single Sign-On (SSO) mit Azure verwendet. Seit v13.2 unterstützt BuildingPro Suites eine größere Bandbreite an Identitätsanbietern und implementiert das vollständige SAML-SSO-Protokoll. Daher wurde die „ADFS“-App durch die neue „SAML SSO“-App ersetzt.

**Wichtig:** Nach dem Upgrade auf BuildingPro Suites v13.2 funktioniert die ADFS-Anmeldung nicht mehr. Um die SSO-Funktionalität wiederherzustellen, befolgen Sie diese Schritte:

1. Installieren Sie die **SAML SSO** App.
2. Überprüfen Sie die Konfiguration der SAML-SSO-App. Sie sollte die vorherige ADFS-Konfiguration automatisch erkennen und übernehmen. (Die Konfigurationen beider Apps sollten ähnlich sein.)
3. In Ihrer **Azure** Konfiguration aktualisieren Sie die Reply-URL auf: `https://{your-eliona-domain.com}/apps-public/saml-sso/saml/acs`
4. Stellen Sie sicher, dass der **Entity ID** in Ihrer Azure-Konfiguration mit derjenigen in der SAML-SSO-App übereinstimmt.

Nachdem Sie diese Schritte abgeschlossen haben, testen Sie den Anmeldeprozess, um sicherzustellen, dass SSO korrekt funktioniert. Nach erfolgreicher Prüfung können Sie die **ADFS** App.

### Konfiguration

Der SAML-2.0-Service-Provider wird durch die Definition eines oder mehrerer Authentifizierungsdatensätze konfiguriert:

| Attribut                     | Beschreibung                                                                                                                                                                                                           |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`                         | Konfigurations-ID. Kann nur 1 sein                                                                                                                                                                                     |
| `enable`                     | Ob die Konfiguration aktiv ist oder nicht                                                                                                                                                                              |
| `serviceProviderCertificate` | Das Zertifikat dieses SAML-Service-Providers (SP). Kann ein selbstsigniertes X.509-Zertifikat sein.                                                                                                                    |
| `serviceProviderPrivateKey`  | Der private Schlüssel, der zum Zertifikat dieses SAML-Service-Providers (SP) passt. VERWENDEN Sie KEINE RSA-Schlüssellänge unter 2048                                                                                  |
| `idpMetadataUrl`             | Die Metadaten-URL des Identity Providers (IdP), falls verfügbar. Andernfalls verwenden Sie metadataXml, um die Metadaten des IdP direkt bereitzustellen, und lassen Sie dieses Feld leer                               |
| `idpMetadataXml`             | Geben Sie das IdP-Metadaten-XML direkt an, wenn Sie keinen Zugriff auf die idpMetadataUrl haben                                                                                                                        |
| `ownUrl`                     | Die eigene URL dieser BuildingPro-Suites-Instanz                                                                                                                                                                       |
| `userToArchive`              | Wenn aktiviert, wird der neu erstellte Benutzer archiviert und kann sich erst anmelden, nachdem ein Administrator ihn aktiviert hat                                                                                    |
| `allowInitializationByIdp`   | IdP-initiiertes Assertions zulassen.                                                                                                                                                                                   |
| `signedRequest`              | Ob der SP eine signierte SAML-Authn-Anfrage stellen soll oder nicht                                                                                                                                                    |
| `forceAuthn`                 | Normalerweise ist dieser Wert für einen SP auf false gesetzt. Wenn true gesetzt ist, muss sich der Benutzer erneut authentifizieren (sich beim IdP anmelden), selbst wenn er bereits eine gültige Sitzung beim IdP hat |
| `entityId`                   | Entity-ID des Service-Providers. Eindeutige URI zur Identifizierung, normalerweise basierend auf der Domäne des Tenants. Normalerweise kann der Standardwert unverändert bleiben                                       |
| `loginFailedUrl`             | Die URL, auf die umgeleitet wird, wenn die Anmeldung fehlschlägt. Wenn dieser Wert null ist, wird die Standardseite /noLogin angezeigt                                                                                 |

Die Konfiguration erfolgt über eine entsprechende JSON-Struktur. Zum Beispiel kann die folgende JSON-Struktur verwendet werden, um einen Endpunkt für App-Berechtigungen zu definieren:

```json
{
  "id": 1,
  "enable": true,
  "serviceProviderCertificate": "-----BEGIN CERTIFICATE-----***-----END CERTIFICATE-----",
  "serviceProviderPrivateKey": "-----BEGIN PRIVATE KEY-----***-----END PRIVATE KEY-----",
  "idpMetadataUrl": "[https://login.thirdparty-idp.example/federationmetadata/metadata.xml](https://login.thirdparty-idp.example/federationmetadata/metadata.xml)",
  "idpMetadataXml": null,
  "ownUrl": "[https://customer.eliona.cloud](https://customer.eliona.cloud)",
  "userToArchive": false,
  "allowInitializationByIdp": false,
  "signedRequest": true,
  "forceAuthn": false,
  "entityId": "{ownUrl}/saml/metadata",
  "loginFailedUrl": "{ownUrl}/logout"
}
```

Konfigurationen können mit dieser Struktur in BuildingPro Suites unter `Einstellungen > Apps > System > SAML SSO App`. Dazu wählen Sie den /configs-Endpunkt mit der POST-Methode aus.

Informationen zur Konfiguration auf Seiten des Anbieters finden Sie in der Dokumentation Ihres SSO-Anbieters.

#### Attributzuordnung

Die Standard-Attributzuordnung (geeignet für Azure AD) kann geändert werden über `/configuration/attribute-mapping`.

```json
{
  "uuid": "[http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn](http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn)",
  "email": "[http://schemas.xmlsoap.org/ws/2005/05/identity/claims/email](http://schemas.xmlsoap.org/ws/2005/05/identity/claims/email)",
  "firstName": "[http://schemas.xmlsoap.org/ws/2005/05/identity/claims/firstName](http://schemas.xmlsoap.org/ws/2005/05/identity/claims/firstName)",
  "lastName": "[http://schemas.xmlsoap.org/ws/2005/05/identity/claims/lastName](http://schemas.xmlsoap.org/ws/2005/05/identity/claims/lastName)",
  "phone": "[http://schemas.xmlsoap.org/ws/2005/05/identity/claims/phoneNumber](http://schemas.xmlsoap.org/ws/2005/05/identity/claims/phoneNumber)"
}
```

Wenn Sie E-Mail als Kennung verwenden möchten (empfohlen), lassen Sie das Feld uuid leer. Wenn Sie eine andere eindeutige Benutzerkennung verwenden möchten (z. B. UPN), füllen Sie das Feld uuid mit dem Namen des SAML-Attributs aus.

#### Berechtigungszuordnung

Um die Zugriffskontrollliste zu übergeben, ermöglicht die SAML-SSO-App die Zuweisung von Benutzerrollen während der Benutzererstellung.

Beispiel für die Einrichtung von Mandantenrollen:

Erstellen Sie zunächst im BuildingPro-Suites-Engineering-Modul die Mandantenrollen „Tenant user“ und „Tenant guest“ und konfigurieren Sie dann den Endpunkt `/configuration/permission-mapping` mit der folgenden Konfiguration:

```json
{
  "defaultSystemRole": "System user",
  "defaultProjRole": "Tenant user",
  "defaultLanguage": "en",
  "projRoleSamlAttribute": "MemberOf", // SAML-Attributname mit Rollennamen
  "projRoleMap": [
    {
      "elionaRole": "Tenant user",
      "samlValue": "Manager"
    },
    {
      "elionaRole": "Tenant guest",
      "samlValue": "Guest"
    }
  ]
}
```

#### Azure AD als SAML-SSO-Identitätsanbieter

Um Azure Active Directory (Azure AD) speziell für SAML-basiertes Single Sign-On (SSO) zu konfigurieren, befolgen Sie diese Schritte:

1. Unternehmensanwendung in Azure AD erstellen
   * Gehen Sie zu der [Azure-Portal](https://portal.azure.com/).
   * Navigieren Sie zu Azure Active Directory > Enterprise applications. (Hinweis: App registrations sind für den OAuth/OIDC-Workflow vorgesehen, während Enterprise applications für SAML gedacht sind.)
   * Klicken Sie auf New application und wählen Sie dann „Create your own application“.
   * Geben Sie den Namen Ihrer Anwendung ein und wählen Sie „Integrate any other application you don't find in the gallery“.
   * Klicken Sie auf Create.
2. Single Sign-On (SAML) konfigurieren
   * Wählen Sie in Ihrer Unternehmensanwendung unter Manage Single sign-on aus.
   * Wählen Sie SAML als Single-Sign-On-Methode aus.
3. Grundlegende SAML-Konfiguration einrichten
   * Klicken Sie im Abschnitt Basic SAML Configuration auf Edit.
   * Identifier (Entity ID): Setzen Sie dies auf eine eindeutige URI, typischerweise basierend auf der Domäne Ihres Tenants oder einer anderen verifizierten Domäne. Beispiel: `yourtenant.onmicrosoft.com/your-app-id`. Muss nicht mit der tatsächlichen Domäne der BuildingPro-Suites-Instanz übereinstimmen. Kann auch über das Manifest-Feld festgelegt werden `"identifierUris"`.
   * Reply URL (Assertion Consumer Service URL): Geben Sie die URL ein, an die Azure AD SAML-Antworten sendet, z. B.: `https://customer.eliona.cloud/apps-public/saml-sso/saml/acs`.
4. Azure AD-Metadaten herunterladen

   * Laden Sie im Abschnitt SAML Signing Certificate die Datei Federation Metadata XML herunter oder kopieren Sie die angegebene Metadaten-URL:

   ```
   [https://login.microsoftonline.com/](https://login.microsoftonline.com/){tenant-id}/federationmetadata/2007-06/federationmetadata.xml
   ```

   * Ersetzen Sie `{tenant-id}` durch Ihre tatsächliche Azure-AD-Mandanten-ID.
5. Benutzer und Gruppen zuweisen
   * Weisen Sie unter Users and groups Benutzer oder Gruppen zu, die sich über SAML bei BuildingPro Suites authentifizieren dürfen.
6. SAML-SSO-Einstellungen in BuildingPro Suites konfigurieren
   * MS Login: Aktivieren Sie den Login-Button „via Microsoft“, indem Sie die Konfiguration auf „Active“ setzen.
   * Metadata URL: Geben Sie die aus Azure AD kopierte Metadaten-URL ein (siehe Schritt 4).
   * Own URL: Geben Sie die URL Ihrer BuildingPro-Suites-Instanz ein (z. B. `https://customer.eliona.cloud`).
   * Entity ID: Setzen Sie die Entity ID aus Schritt 3.
   * Certificate: Optional, Sie können ein selbst erstelltes Zertifikat verwenden, um die Kommunikation abzusichern.

Für eine detailliertere Anleitung lesen Sie die offizielle [Microsoft Azure SAML-Dokumentation](https://learn.microsoft.com/en-us/azure/active-directory/manage-apps/configure-single-sign-on-non-gallery-applications).
