[comment]: # ({840f7138-70beca7a})
# 3 SAML

[comment]: # ({/840f7138-70beca7a})

[comment]: # ({15eb0913-455714b6})
#### Visão geral

A [autenticação](/manual/web_interface/frontend_sections/users/authentication) SAML 2.0 pode ser usada para fazer login no Zabbix.

Se apenas o login SAML estiver configurado, o usuário também deverá existir no Zabbix, porém, sua senha do Zabbix não será usada.
Se a autenticação for bem-sucedida, o Zabbix corresponderá um nome de usuário local ao atributo de nome de usuário retornado pelo SAML.

[comment]: # ({/15eb0913-455714b6})

[comment]: # ({720063d0-85c848c9})
#### Provisionamento de usuários

É possível configurar o provisionamento de usuários JIT (just-in-time) para usuários SAML.
Nesse caso, não é necessário que um usuário já exista no Zabbix.
A conta de usuário pode ser criada quando o usuário fizer login no Zabbix pela primeira vez.

:::noteimportant
Se o provisionamento JIT estiver habilitado, um grupo de usuários para usuários desprovisionados deve ser especificado na aba *Authentication*.
:::

Além do provisionamento JIT, também é possível habilitar e configurar o provisionamento SCIM (System for Cross-domain Identity Management) - gerenciamento *contínuo* de contas de usuário para aqueles usuários que foram criados pelo provisionamento de usuários.
O provisionamento SCIM requer um [token de API](/manual/web_interface/frontend_sections/users/api_tokens) do Zabbix (com permissões de Super admin) para autenticação no Zabbix.

Por exemplo, se um usuário for movido de um grupo SAML para outro, o usuário também será movido de um grupo para outro no Zabbix;
se um usuário for removido de um grupo SAML, o usuário também será removido do grupo no Zabbix e, se não pertencer a nenhum outro grupo, será adicionado ao grupo de usuários para usuários desprovisionados.

Se o SCIM estiver habilitado e configurado, um usuário SAML será provisionado no momento em que o usuário fizer login no Zabbix e será atualizado continuamente com base nas alterações no SAML.
Usuários SAML já existentes não serão provisionados, e somente usuários provisionados serão atualizados.
Observe que apenas mídias válidas serão adicionadas a um usuário quando o usuário for provisionado ou atualizado.

Se o SCIM não estiver habilitado, um usuário SAML será provisionado (e posteriormente atualizado) no momento em que o usuário fizer login no Zabbix.

::: noteclassic
Se a autenticação SAML estiver habilitada, os usuários poderão escolher entre fazer login localmente ou via single sign-on SAML.
Se o provisionamento JIT for usado, então somente o single sign-on será possível.
:::

[comment]: # ({/720063d0-85c848c9})

[comment]: # ({7be842a1-4cca45cd})
#### Configurando o provedor de identidade

Para funcionar com o Zabbix, um provedor de identidade SAML ([onelogin.com](https://onelogin.com), [auth0.com](https://auth0.com),
[okta.com](https://okta.com), etc.) precisa ser configurado da seguinte forma:

-   *Assertion Consumer URL* deve ser definido como
    `<path_to_zabbix_ui>/index_sso.php?acs`
-   *Single Logout URL* deve ser definido como
    `<path_to_zabbix_ui>/index_sso.php?sls`

Exemplos de `<path_to_zabbix_ui>`: `https://example.com/zabbix/ui`,
`http://another.example.com/zabbix`, `http://<any_public_ip_address>/zabbix`

[comment]: # ({/7be842a1-4cca45cd})

[comment]: # ({ace163ae-274513e2})
#### Configurando o Zabbix

::: noteimportant
É necessário instalar o php-openssl se você quiser
usar autenticação SAML no frontend.
:::

Para usar autenticação SAML, o Zabbix deve ser configurado da seguinte
forma:

1\. A chave privada e o certificado devem ser armazenados em
*ui/conf/certs*/, a menos que caminhos personalizados sejam fornecidos em
[zabbix.conf.php](#advanced-settings).

Por padrão, o Zabbix procurará nos seguintes locais:

-   ui/conf/certs/sp.key - arquivo de chave privada do SP
-   ui/conf/certs/sp.crt - arquivo de certificado do SP
-   ui/conf/certs/idp.crt - arquivo de certificado do IDP

2\. Todas as configurações mais importantes podem ser definidas no frontend do Zabbix.
No entanto, é possível especificar configurações adicionais no
[arquivo de configuração](#advanced-settings).

![](../../../../../../assets/en/manual/web_interface/frontend_sections/users/auth_saml.png)

Parâmetros de configuração, disponíveis no frontend do Zabbix:

|Parameter|Description|
|--|--------|
|*Enable SAML authentication*|Marque a caixa de seleção para habilitar a autenticação SAML.|
|*Enable JIT provisioning*|Marque a caixa de seleção para habilitar o provisionamento JIT de usuários.|
|*IDP entity ID*|O identificador único da entidade dentro do provedor de identidade SAML.|
|*SSO service URL*|A URL para a qual os usuários serão redirecionados ao fazer login.|
|*SLO service URL*|A URL para a qual os usuários serão redirecionados ao fazer logout. Se deixado em branco, o serviço SLO não será usado.|
|*Username attribute*|Atributo SAML a ser usado como nome de usuário ao fazer login no Zabbix.<br>A lista de valores suportados é determinada pelo provedor de identidade.<br><br>Exemplos:<br>uid<br>userprincipalname<br>samaccountname<br>username<br>userusername<br>urn:oid:0.9.2342.19200300.100.1.1<br>urn:oid:1.3.6.1.4.1.5923.1.1.1.13<br>urn:oid:0.9.2342.19200300.100.1.44|
|*SP entity ID*|O identificador único do provedor de serviço (se não corresponder, a operação será rejeitada).<br>É possível especificar uma URL ou qualquer string de dados.|
|*SP name ID format*|Solicita um formato específico de name ID na resposta.<br><br>Exemplos:<br>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent<br>urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified<br>urn:oasis:names:tc:SAML:2.0:nameid-format:transient|
|*Sign*|Marque as caixas de seleção para escolher as entidades para as quais a assinatura SAML deve ser habilitada:<br>*Messages*<br>*Assertions*<br>*AuthN requests*<br>*Logout requests*<br>*Logout responses*|
|*Encrypt*|Marque as caixas de seleção para escolher as entidades para as quais a criptografia SAML deve ser habilitada:<br>*Name ID*<br>*Assertions*|
|*Case-sensitive login*|Desmarque a caixa de seleção para desabilitar o login com diferenciação entre maiúsculas e minúsculas para nomes de usuário (habilitado por padrão).<br>Desabilitar o login com diferenciação entre maiúsculas e minúsculas permite, por exemplo, fazer login como "admin" mesmo que o usuário do Zabbix seja "Admin" ou "ADMIN".<br>Observe que, se o login com diferenciação entre maiúsculas e minúsculas estiver desabilitado e houver vários usuários do Zabbix com nomes de usuário semelhantes (por exemplo, Admin e admin), o login desses usuários será sempre negado com a seguinte mensagem de erro: "Authentication failed: supplied credentials are not unique."|
|*Configure JIT provisioning*|Marque esta caixa de seleção para exibir opções relacionadas ao provisionamento JIT de usuários.|
|*Group name attribute*|Especifique o atributo de nome do grupo para o provisionamento JIT de usuários.|
|*User name attribute*|Especifique o atributo de nome do usuário para o provisionamento JIT de usuários.|
|*User last name attribute*|Especifique o atributo de sobrenome do usuário para o provisionamento JIT de usuários.|
|*User group mapping*|Mapeie um padrão de grupo de usuários SAML para um grupo de usuários e uma função de usuário do Zabbix.<br>Isso é necessário para determinar qual grupo/função o usuário provisionado receberá no Zabbix.<br>Clique em *Add* para adicionar um mapeamento.<br>O campo *SAML group pattern* suporta curingas. O nome do grupo deve corresponder a um grupo existente.<br>Se um usuário SAML corresponder a vários grupos de usuários do Zabbix, o usuário se tornará membro de todos eles.<br>Se um usuário corresponder a várias funções de usuário do Zabbix, o usuário receberá o nível de permissão mais alto entre elas.|
|*Media type mapping*|Mapeie os atributos de mídia SAML do usuário (por exemplo, email) para a mídia do usuário no Zabbix para envio de notificações.|
|*Enable SCIM provisioning*|Marque esta caixa de seleção para habilitar o provisionamento SCIM 2.0.|

Veja exemplos de configuração de provedores de identidade SAML para login e provisionamento de usuários no Zabbix em:

-   [Microsoft Azure AD](/manual/appendix/install/azure_ad)
-   [Okta](/manual/appendix/install/okta)
-   [Onelogin](/manual/appendix/install/onelogin)

[comment]: # ({/ace163ae-274513e2})

[comment]: # ({8ba316c1-d739be65})
#### Observações sobre provisionamento SCIM

Para provisionamento SCIM, especifique o caminho para o frontend do Zabbix e adicione api_scim.php a ele, no lado do provedor de identidade, ou seja:

    https://<caminho-para-o-zabbix-ui>/api_scim.php

Os atributos de usuário que são usados no Zabbix (nome de usuário, nome, sobrenome e atributos de mídia) precisam ser adicionados como atributos personalizados e, se necessário, o namespace externo deve ser o mesmo do esquema de usuário: `urn:ietf:params:scim:schemas:core:2.0:User`.

[comment]: # ({/8ba316c1-d739be65})

[comment]: # ({76f3227b-2c636ca1})
#### Configurações avançadas

Parâmetros SAML adicionais podem ser configurados no arquivo de configuração do frontend do Zabbix (*zabbix.conf.php*):

-   $SSO\['SP\_KEY'\] = '<caminho para o arquivo de chave privada do SP>';
-   $SSO\['SP\_CERT'\] = '<caminho para o arquivo de certificado do SP>';
-   $SSO\['IDP\_CERT'\] = '<caminho para o arquivo de certificado do IDP>';
-   $SSO\['SETTINGS'\]

::: noteclassic
O array `$SSO['SETTINGS']` deve seguir a mesma estrutura esperada pela biblioteca *SAML PHP Toolkit* ([fornecida](/manual/installation/requirements#frontend) com o Zabbix).
Para uma descrição completa das opções de configuração disponíveis, consulte a [documentação oficial da biblioteca](https://github.com/SAML-Toolkits/php-saml?tab=readme-ov-file#how-it-works).
:::

Apenas as seguintes opções podem ser definidas como parte de $SSO\['SETTINGS'\]:

-   *strict*
-   *baseurl*
-   *compress*
-   *contactPerson*
-   *organization*
-   *sp* (apenas opções especificadas nesta lista)
    -   *attributeConsumingService*
    -   *x509certNew*
-   *idp* (apenas opções especificadas nesta lista)
    -   *singleLogoutService* (apenas uma opção)
        -   *responseUrl*
    -   *certFingerprint*
    -   *certFingerprintAlgorithm*
    -   *x509certMulti*
-   *security* (apenas opções especificadas nesta lista)
    -   *signMetadata*
    -   *wantNameId*
    -   *requestedAuthnContext*
    -   *requestedAuthnContextComparison*
    -   *wantXMLValidation*
    -   *relaxDestinationValidation*
    -   *destinationStrictlyMatches*
    -   *rejectUnsolicitedResponsesWithInResponseTo*
    -   *signatureAlgorithm*
    -   *digestAlgorithm*
    -   *lowercaseUrlencoding*

Todas as outras opções serão obtidas do banco de dados e não podem ser sobrescritas.
A opção *debug* será ignorada.

Além disso, se a interface do Zabbix estiver atrás de um proxy ou balanceador de carga, a opção personalizada *use\_proxy\_headers* pode ser usada:

-   *false* (padrão) - ignora a opção;
-   *true* - usa os cabeçalhos HTTP X-Forwarded-\* para construir a URL base.
  
Se estiver usando um balanceador de carga para conectar à instância do Zabbix, onde o balanceador de carga usa TLS/SSL e o Zabbix não, você deve indicar os parâmetros 'baseurl', 'strict' e 'use_proxy_headers' da seguinte forma:

```php
$SSO['SETTINGS'] = [
    'strict' => false,
    'baseurl' => 'https://zabbix.example.com/zabbix/',
    'use_proxy_headers' => true
];
```

**Exemplo de configuração:**

```php
$SSO['SETTINGS'] = [
    'security' => [
        'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
        'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
        // ...
    ],
    // ...
];
```

[comment]: # ({/76f3227b-2c636ca1})

[comment]: # ({32ef8a47-037df9d8})
##### Configuração do frontend com Kerberos/ADFS

O arquivo de configuração do frontend do Zabbix (*zabbix.conf.php*) pode ser usado para configurar SSO com autenticação Kerberos e ADFS:

```php
$SSO['SETTINGS'] = [
    'security' => [
        'requestedAuthnContext' => [
            'urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos',
        ],
        'requestedAuthnContextComparison' => 'exact'
    ]
]; 
```

Nesse caso, no campo *SP name ID* da configuração SAML, defina:

    urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified

[comment]: # ({/32ef8a47-037df9d8})
