[comment]: # ({2ac94e21-11206317})
# 12 SAML-Einrichtung mit Microsoft Entra ID

[comment]: # ({/2ac94e21-11206317})

[comment]: # ({8babfe4a-d1a8a2fc})
#### Übersicht

Dieser Abschnitt enthält Richtlinien für die Konfiguration von Single Sign-on und der Benutzerbereitstellung in Zabbix aus Microsoft Entra ID (früher Microsoft Azure Active Directory) mithilfe der SAML-2.0-Authentifizierung.

[comment]: # ({/8babfe4a-d1a8a2fc})

[comment]: # ({b4d9f9a1-ed685e3c})
#### Microsoft Entra ID-Konfiguration

[comment]: # ({/b4d9f9a1-ed685e3c})

[comment]: # ({42f21e5b-440025da})
##### Erstellen einer Anwendung

1\. Melden Sie sich im Microsoft Entra admin center bei [Microsoft Entra ID](https://entra.microsoft.com) an. Zu Testzwecken können Sie ein kostenloses Testkonto in Microsoft Entra ID erstellen.

2\. Wählen Sie im Microsoft Entra admin center *Applications* -> *Enterprise applications* -> *New application* -> *Create your own application* aus.

3\. Fügen Sie den Namen Ihrer App hinzu und wählen Sie die Option *Integrate any other application...* aus. Klicken Sie anschließend auf *Create*.

![](../../../../assets/en/manual/appendix/install/entra_create_app.png){width="550"}

[comment]: # ({/42f21e5b-440025da})

[comment]: # ({70c506a8-82aca309})
##### Einrichten von Single Sign-on

1\. Gehen Sie auf der Seite Ihrer Anwendung zu *Set up single sign on* und klicken Sie auf *Get started*. Wählen Sie dann *SAML* aus.

2\. Bearbeiten Sie *Basic SAML Configuration*:

-   In *Identifier (Entity ID)* legen Sie einen eindeutigen Namen fest, mit dem Ihre App in Microsoft Entra ID identifiziert wird, zum Beispiel `zabbix`;
-   In *Reply URL (Assertion Consumer Service URL)* legen Sie den Zabbix Single-Sign-on-Endpunkt fest: `https://<path-to-zabbix-ui>/index_sso.php?acs`:

![](../../../../assets/en/manual/appendix/install/entra_basic_saml.png){width="600"}

Beachten Sie, dass "https" erforderlich ist. Damit dies mit Zabbix funktioniert, muss in `conf/zabbix.conf.php` die folgende Zeile hinzugefügt werden:

```
$SSO['SETTINGS'] = ['use_proxy_headers' => true];
```

3\. Bearbeiten Sie *Attributes & Claims*. Sie müssen alle Attribute hinzufügen, die an Zabbix übergeben werden sollen (user_name, user_lastname, user_email, user_mobile, groups).

Die Attributnamen sind beliebig. Es können unterschiedliche Attributnamen verwendet werden, jedoch ist erforderlich, dass sie mit dem jeweiligen Feldwert in den Zabbix SAML-Einstellungen übereinstimmen.

-   Klicken Sie auf *Add new claim*, um ein Attribut hinzuzufügen:

![](../../../../assets/en/manual/appendix/install/azure_claim.png)

-   Klicken Sie auf *Add a group claim*, um ein Attribut zum Übergeben von Gruppen an Zabbix hinzuzufügen:

![](../../../../assets/en/manual/appendix/install/entra_claim_group.png){width="600"}

Bei diesem Claim ist es wichtig, dass die Gruppennamen (statt der Gruppen-IDs) über das ausgewählte *Source attribute* an Zabbix übergeben werden. Andernfalls funktioniert die JIT-Benutzerbereitstellung nicht ordnungsgemäß.

4\. Laden Sie unter *SAML Certificates* das von Entra ID bereitgestellte Base64-Zertifikat herunter und legen Sie es in `conf/certs` der Zabbix Frontend-Installation ab.

Setzen Sie die Berechtigungen auf 644, indem Sie Folgendes ausführen:

    chmod 644 entra.cer

Stellen Sie sicher, dass `conf/zabbix.conf.php` die folgende Zeile enthält:

```
$SSO['IDP_CERT'] = 'conf/certs/entra.cer';
```

5\. Verwenden Sie die Werte aus *Set up <your app name>* in Entra ID, um die Zabbix SAML-Authentifizierung zu konfigurieren (siehe nächsten Abschnitt):

![](../../../../assets/en/manual/appendix/install/entra_sso_settings.png){width="550"}

[comment]: # ({/70c506a8-82aca309})

[comment]: # ({757a04f4-b1c1c877})
#### Zabbix-Konfiguration

1\. Gehen Sie in Zabbix zu den [SAML-Einstellungen](/manual/web_interface/frontend_sections/users/authentication/saml#setting-up-zabbix) und füllen Sie die Konfigurationsoptionen basierend auf der Entra ID-Konfiguration aus:

![](../../../../assets/en/manual/appendix/install/entra_zabbix_conf.png){width="600"}

|Zabbix-Feld|Einrichtungsfeld in Entra ID|Beispielwert|
|----|----|--|
|*IdP entity ID*|Microsoft Entra identifier| |
|*SSO service URL*|Login URL| |
|*SLO service URL*|Logout URL| |
|*SP entity ID*|Identifier (Entity ID)| |
|*Username attribute*|Custom attribute (claim)|`user_email`|
|*Group name attribute*|Custom attribute (claim)|`groups`|
|*User name attribute*|Custom attribute (claim)|`user_name`|
|*User last name attribute*|Custom attribute (claim)|`user_lastname`|

Außerdem ist die Konfiguration der Zuordnung von Benutzergruppen erforderlich. Die Zuordnung von Medien ist optional.

Klicken Sie auf *Update*, um diese Einstellungen zu speichern.

[comment]: # ({/757a04f4-b1c1c877})

[comment]: # ({87b1b3e7-8c2fcfa4})
#### SCIM-Benutzerbereitstellung

1\. Öffnen Sie auf der Anwendungsseite Ihrer Entra ID im Hauptmenü die Seite *Provisioning*. Klicken Sie auf *Get started* und wählen Sie dann den Modus *Automatic provisioning* aus:

-   Setzen Sie unter *Tenant URL* den folgenden Wert: `https://<path-to-zabbix-ui>/api_scim.php`
-   Geben Sie unter *Secret token* ein Zabbix-API-Token mit Super-Admin-Berechtigungen ein.
-   Klicken Sie auf *Test connection*, um zu prüfen, ob die Verbindung hergestellt wurde. 

![](../../../../assets/en/manual/appendix/install/entra_api_connection.png){width="550"}

2\. Jetzt können Sie alle Attribute hinzufügen, die per SCIM an Zabbix übergeben werden. Klicken Sie dazu auf *Mappings* und anschließend auf *Provision Microsoft Entra ID Users*.

![](../../../../assets/en/manual/appendix/install/entra_scim_mappings_add.png){width="550"}

Aktivieren Sie am unteren Ende der Attributzuordnungsliste *Show advanced options* und klicken Sie dann auf *Edit attribute list for customappsso*.

Fügen Sie am unteren Ende der Attributliste eigene Attribute mit dem Typ 'String' hinzu:

![](../../../../assets/en/manual/appendix/install/azure_scim_attrib.png){width="550"}

Speichern Sie die Liste.

3\. Jetzt können Sie Zuordnungen für die hinzugefügten Attribute erstellen. Klicken Sie am unteren Ende der Attributzuordnungsliste auf *Add New Mapping* und erstellen Sie die Zuordnungen wie unten gezeigt:

![](../../../../assets/en/manual/appendix/install/azure_scim_mapping.png){width="550"}

Wenn alle Zuordnungen hinzugefügt wurden, speichern Sie die Liste der Zuordnungen.

![](../../../../assets/en/manual/appendix/install/azure_scim_mappings.png){width="550"}

4\. Als Voraussetzung für die Benutzerbereitstellung in Zabbix müssen Benutzer und Gruppen in Entra ID konfiguriert sein. 

Dazu gehen Sie zum *Microsoft Entra admin center* und fügen dann Benutzer/Gruppen auf den jeweiligen Seiten *Users* und *Groups* hinzu.

5\. Wenn Benutzer und Gruppen in Entra ID erstellt wurden, können Sie im Menü *Users and groups* Ihrer Anwendung diese der App hinzufügen.

6\. Gehen Sie zum Menü *Provisioning* Ihrer App und klicken Sie auf *Start provisioning*, damit Benutzer an Zabbix bereitgestellt werden.

Beachten Sie, dass die PATCH-Anforderung für Benutzer in Entra ID keine Änderungen an Medien unterstützt.

[comment]: # ({/87b1b3e7-8c2fcfa4})

[comment]: # ({c0cb36b9-ff9d0f6b})
#### Signierung von Authentifizierungsanfragen

Es ist möglich, Entra ID so zu konfigurieren, dass die [Signatur](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/howto-enforce-signed-saml-authentication) signierter Authentifizierungsanfragen validiert wird.

Damit dies funktioniert, erstellen Sie öffentliche/private Schlüssel:

```bash
openssl req -x509 -newkey rsa:4096 -keyout /usr/share/zabbix/conf/certs/request-sign.key -out /usr/share/zabbix/conf/certs/request-sign.pem -sha256 -days 1825 -nodes
```

Weisen Sie Berechtigungen zu:

```bash
chown apache /usr/share/zabbix/conf/certs/request-sign.key 
chmod 400 /usr/share/zabbix/conf/certs/request-sign.key
```

Aktualisieren Sie die Konfiguration des Zabbix Frontend, indem Sie Folgendes hinzufügen:

```php
$SSO['SP_KEY'] = 'conf/certs/request-sign.key';
$SSO['SP_CERT'] = 'conf/certs/request-sign.crt';
```

[comment]: # ({/c0cb36b9-ff9d0f6b})

[comment]: # ({612478ad-80731412})
#### Fehlerbehebung

Bei MicroSoft Edge-Browsern können Authentifizierungsprobleme auftreten, wenn ein Benutzer, der sich über SAML bei Zabbix anmelden möchte, bereits mit dem MicroSoft Edge-Profil angemeldet ist. Ein Anzeichen für ein solches Problem ist, dass sich der Benutzer möglicherweise mit MicroSoft Edge im privaten Modus bei Zabbix anmelden kann.

Um in diesem Fall Authentifizierungsprobleme zu vermeiden, kann es erforderlich sein, `requestedAuthnContext` in der Konfigurationsdatei des Zabbix-Frontends (*zabbix.conf.php*) auf "false" zu setzen.

```php
$SSO['SETTINGS'] = [
    'security' => [
        'requestedAuthnContext' => false
    ]
]; 
```

[comment]: # ({/612478ad-80731412})
