Настройка модуля osmax-core для интеграции с Microsoft Active Directory

Интеграция osmax-core с Microsoft Active Directory выполняется в два этапа:

Настройка Kerberos-аутентификации

Предварительное условие:

На контроллере домена должна быть создана и настроена сервисная учетная запись согласно инструкции Создание Service Principal Name (SPN) и keytab-файла для сервисной учетной записи в домене под управлением Active Directory.

Интеграцию можно настроить одним из перечисленных способов:

Настройка ОС с бэкендом

  1. Установите пакет с Kerberos-клиентом. Для Debian-like ОС используйте команды:

    sudo apt update
    sudo apt install krb5-user
  2. Создайте или отредактируйте файл /etc/krb5.conf и укажите в нем следующие параметры:

    [libdefaults]
    dns_lookup_realm = false
    dns_lookup_kdc = false
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true
    rdns = false
    default_realm = <AD_DOMAIN_NAME>
    udp_preference_limit = 1
    
    [realms]
    <AD_DOMAIN_NAME> = {
    kdc = <AD_DOMAIN_CONTROLLER_ADDRESS>
    admin_server = <AD_DOMAIN_CONTROLLER_ADDRESS>
    }

    Пример:

    [libdefaults]
    dns_lookup_realm = false
    dns_lookup_kdc = false
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true
    rdns = false
    default_realm = DEMO.OSMAKS.INNO.TECH
    udp_preference_limit = 1
    
    [realms]
    DEMO.OSMAKS.INNO.TECH = {
    kdc = 192.168.0.1
    admin_server = 192.168.0.1
    }

Настройка с использованием прямого указания сервисной учетной записи

В файле конфигурации бэкенда application.properties задайте следующие параметры конфигурации:

quarkus.kerberos.service-principal-name=<service-account-name>
quarkus.kerberos.service-principal-realm=<domain-name>
quarkus.kerberos.service-principal-password=<service-account-password>

Пример:

quarkus.kerberos.service-principal-name=osmaks_backend_svc
quarkus.kerberos.service-principal-realm=DEMO.OSMAKS.INNO.TECH
quarkus.kerberos.service-principal-password=Qwerty123

Настройка с использованием keytab-файла

В файле конфигурации бэкенда application.properties задайте следующие параметры конфигурации:

quarkus.kerberos.service-principal-name=<keytab-full-spn-with-domain>
quarkus.kerberos.keytab-path=<path-to-keytab-file>

Пример:

quarkus.kerberos.service-principal-name=HTTP/admin-console.osmaks.mycompany.com@DEMO.OSMAKS.INNO.TECH
quarkus.kerberos.keytab-path=/opt/inno-osmaks-core/osmaks_ad.keytab

Настройка источника данных LDAP(S) из домена Active Directory

Предварительное условие:

Используемый для подключения по протоколу LDAP сервер должен являться одним из контроллеров домена Active Directory.

Интеграцию можно настроить одним из перечисленных способов:

Настройка интеграции по протоколу LDAP

В файле конфигурации бэкенда application.properties задайте следующие параметры конфигурации:

lcm.inventory.ldap.datasource[i].name=<datasource-alias>
lcm.inventory.ldap.datasource[i].host=<ldap-server-address>
lcm.inventory.ldap.datasource[i].port=<ldap-port>
lcm.inventory.ldap.datasource[i].username=<service-account-name>
lcm.inventory.ldap.datasource[i].password=<service-account-password>
lcm.inventory.ldap.datasource[i].ssl=false
lcm.inventory.ldap.datasource[i].base-dn=<base-DN>

Пример:

lcm.inventory.ldap.datasource[0].name=DEMO.OSMAKS.INNO.TECH
lcm.inventory.ldap.datasource[0].host=192.168.0.1
lcm.inventory.ldap.datasource[0].port=389
lcm.inventory.ldap.datasource[0].username=administrator@DEMO.OSMAKS.INNO.TECH
lcm.inventory.ldap.datasource[0].password=Qwerty123
lcm.inventory.ldap.datasource[0].ssl=false
lcm.inventory.ldap.datasource[0].base-dn="DC=demo,DC=osmaks,DC=inno,DC=tech"

Настройка интеграции по протоколу LDAP over SSL (LDAPS)

Для настройки интеграции по протоколу LDAP over SSL (LDAPS) выполните предварительную настройку контроллера Active Directory согласно инструкции.

Получение файла с сертификатом SSL

  1. Перед настройкой интеграции получите сертификата SSL и сохранение его в файл для этого выполните команду (Для Unix-like ОС):

    openssl s_client -connect <ldap-server-address>:<ldap-over-ssl-port>

    Пример:

    openssl s_client -connect 192.168.0.1:636

    Пример ответа:

    Connecting to 10.31.0.29
    CONNECTED(00000003)
    Can't use SSL_get_servername
    depth=0 CN=lcm-dc-winsrv.lcmtest.lan
    verify error:num=20:unable to get local issuer certificate
    verify return:1
    depth=0 CN=lcm-dc-winsrv.lcmtest.lan
    verify error:num=21:unable to verify the first certificate
    verify return:1
    depth=0 CN=lcm-dc-winsrv.lcmtest.lan
    verify return:1
    ---
    Certificate chain
    0 s:CN=lcm-dc-winsrv.lcmtest.lan
    i:DC=lan, DC=lcmtest, CN=lcmtest-LCM-DC-WINSRV-CA
    a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
    v:NotBefore: May 23 10:49:18 2024 GMT; NotAfter: May 23 10:49:18 2025 GMT
    ---
    Server certificate
    -----BEGIN CERTIFICATE-----
    MIIGZjCCBU6gAwIBAgITTwAAAAMHAuwjdKO36wAAAAAAAzANBgkqhkiG9w0BAQsF
    ADBRMRMwEQYKCZImiZPyLGQBGRYDbGFuMRcwFQYKCZImiZPyLGQBGRYHbGNtdGVz
    dDEhMB8GA1UEAxMYbGNtdGVzdC1MQ00tREMtV0lOU1JWLUNBMB4XDTI0MDUyMzEw
    NDkxOFoXDTI1MDUyMzEwNDkxOFowJDEiMCAGA1UEAxMZbGNtLWRjLXdpbnNydi5s
    Y210ZXN0LmxhbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALkozhSH
    q+Ze/NhW4VmerUI/i81P5YH1TlnaYZ5LtmePwvBoJ4805s/OlAiNDbs1vdStQ1UG
    wWF8fjItPrbb9OHGzUglPWq8EB7aBvTWXVJf5gMMKyCaBXB8aFO21OgtZdjGhuxp
    AvGV/hr3UrsdF2gHSPN9PZ27VQ1W85mOWgqZ9Qjsyu23AAhMxUBrSA8G6TvuHksH
    GbZ8n/FXhF4XkKbMKxyfh44CMmGk4KKJQrw7ljrN1qEZ8Mkv1qREXWdYBTbaNmvR
    +sDwyGU+ZRJ/V0UFKA7CIDMjfPq5zdjl+V6usj/8ZIZTE+daX34jcgs+xD7l99nq
    RXogiXzOKA+pT9kCAwEAAaOCA2IwggNeMC8GCSsGAQQBgjcUAgQiHiAARABvAG0A
    YQBpAG4AQwBvAG4AdAByAG8AbABsAGUAcjAdBgNVHSUEFjAUBggrBgEFBQcDAgYI
    KwYBBQUHAwEwDgYDVR0PAQH/BAQDAgWgMHgGCSqGSIb3DQEJDwRrMGkwDgYIKoZI
    hvcNAwICAgCAMA4GCCqGSIb3DQMEAgIAgDALBglghkgBZQMEASowCwYJYIZIAWUD
    BAEtMAsGCWCGSAFlAwQBAjALBglghkgBZQMEAQUwBwYFKw4DAgcwCgYIKoZIhvcN
    AwcwHQYDVR0OBBYEFDxkdF2yDXR+bnfqKAND0TkLO14cMB8GA1UdIwQYMBaAFACG
    /uVsAvxdtKvqz1B3yIHKd6qWMIHcBgNVHR8EgdQwgdEwgc6ggcuggciGgcVsZGFw
    Oi8vL0NOPWxjbXRlc3QtTENNLURDLVdJTlNSVi1DQSxDTj1sY20tZGMtd2luc3J2
    LENOPUNEUCxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxD
    Tj1Db25maWd1cmF0aW9uLERDPWxjbXRlc3QsREM9bGFuP2NlcnRpZmljYXRlUmV2
    b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Qb2lu
    dDCBygYIKwYBBQUHAQEEgb0wgbowgbcGCCsGAQUFBzAChoGqbGRhcDovLy9DTj1s
    Y210ZXN0LUxDTS1EQy1XSU5TUlYtQ0EsQ049QUlBLENOPVB1YmxpYyUyMEtleSUy
    MFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRpb24sREM9bGNtdGVz
    dCxEQz1sYW4/Y0FDZXJ0aWZpY2F0ZT9iYXNlP29iamVjdENsYXNzPWNlcnRpZmlj
    YXRpb25BdXRob3JpdHkwRQYDVR0RBD4wPKAfBgkrBgEEAYI3GQGgEgQQT/a0Jjho
    UEuS4nyMtGIpx4IZbGNtLWRjLXdpbnNydi5sY210ZXN0LmxhbjBPBgkrBgEEAYI3
    GQIEQjBAoD4GCisGAQQBgjcZAgGgMAQuUy0xLTUtMjEtMTcwMDY2MDMwMS0yODM3
    MzkzNDYwLTE1MTc1MjQ2MjktMTAwMTANBgkqhkiG9w0BAQsFAAOCAQEAc5Hd2UM1
    Xd7A1SNpI9i9oFGeQrtvz80KbKdKBadMPtlfAMQviZecCxTF9BcWbBa/gMljK2Ol
    MZ/9RfTYBTESmMJMwjM8nGPp9W0570cFp+pzNJ3V4Wj1U/yi8AMIegg7E8t0+u9g
    o+RSGTud3+UOiFyVrIdrSYo3Bz2wq9axAkDEwN5JpmWmnxC8OqXqmeeWSG7AzJwu
    B5bGy+GaTj+ytSR8g6+TgZDOaOeEYm7XAVSMxVPL0HD7xozgNBfSbUuheV5oryY9
    x2tN3YE1IbA1U9rqRNAegqVaG60swzWltQbO0PRWuw8rBa8Ir+lpZOn4qlmJ94CS
    WxTZ8YUs0ioM/w==
    -----END CERTIFICATE-----
    subject=CN=lcm-dc-winsrv.lcmtest.lan
    issuer=DC=lan, DC=lcmtest, CN=lcmtest-LCM-DC-WINSRV-CA
    ---
    No client certificate CA names sent
    Client Certificate Types: RSA sign, DSA sign, ECDSA sign
    Requested Signature Algorithms: RSA+SHA256:RSA+SHA384:RSA+SHA1:ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA1:DSA+SHA1:RSA+SHA512:ECDSA+SHA512
    Shared Requested Signature Algorithms: RSA+SHA256:RSA+SHA384:ECDSA+SHA256:ECDSA+SHA384:RSA+SHA512:ECDSA+SHA512
    Peer signing digest: SHA256
    Peer signature type: RSA
    Server Temp Key: ECDH, secp384r1, 384 bits
    ---
    SSL handshake has read 2192 bytes and written 469 bytes
    Verification error: unable to verify the first certificate
    ---
    New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
    Server public key is 2048 bit
    Secure Renegotiation IS supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: 061B0000E89AB417962FAA9D8EEBCE1538C4E1DC7FBA0C7C0911FC37C85AFD28
    Session-ID-ctx:
    Master-Key: 44B14CA5480206686700EFFBCDE315444F16A9DDF22DFD722AB7F1CC2917D6B38DC2A06E6678041AE50C70952E1E53D3
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1717056217
    Timeout   : 7200 (sec)
    Verify return code: 21 (unable to verify the first certificate)
    Extended master secret: yes
    ---
  2. Поместите содержимое ответа между строками -----BEGIN CERTIFICATE----- и -----END CERTIFICATE----- включительно в отдельный файл на сервере с бэкендом с расширением *.crt и выдайте права на чтение всем пользователям (chmod 644).

    Пример содержимого файла с сертифкатом SSL:

    -----BEGIN CERTIFICATE-----
    MIIGZjCCBU6gAwIBAgITTwAAAAMHAuwjdKO36wAAAAAAAzANBgkqhkiG9w0BAQsF
    ADBRMRMwEQYKCZImiZPyLGQBGRYDbGFuMRcwFQYKCZImiZPyLGQBGRYHbGNtdGVz
    dDEhMB8GA1UEAxMYbGNtdGVzdC1MQ00tREMtV0lOU1JWLUNBMB4XDTI0MDUyMzEw
    NDkxOFoXDTI1MDUyMzEwNDkxOFowJDEiMCAGA1UEAxMZbGNtLWRjLXdpbnNydi5s
    Y210ZXN0LmxhbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALkozhSH
    q+Ze/NhW4VmerUI/i81P5YH1TlnaYZ5LtmePwvBoJ4805s/OlAiNDbs1vdStQ1UG
    wWF8fjItPrbb9OHGzUglPWq8EB7aBvTWXVJf5gMMKyCaBXB8aFO21OgtZdjGhuxp
    AvGV/hr3UrsdF2gHSPN9PZ27VQ1W85mOWgqZ9Qjsyu23AAhMxUBrSA8G6TvuHksH
    GbZ8n/FXhF4XkKbMKxyfh44CMmGk4KKJQrw7ljrN1qEZ8Mkv1qREXWdYBTbaNmvR
    +sDwyGU+ZRJ/V0UFKA7CIDMjfPq5zdjl+V6usj/8ZIZTE+daX34jcgs+xD7l99nq
    RXogiXzOKA+pT9kCAwEAAaOCA2IwggNeMC8GCSsGAQQBgjcUAgQiHiAARABvAG0A
    YQBpAG4AQwBvAG4AdAByAG8AbABsAGUAcjAdBgNVHSUEFjAUBggrBgEFBQcDAgYI
    KwYBBQUHAwEwDgYDVR0PAQH/BAQDAgWgMHgGCSqGSIb3DQEJDwRrMGkwDgYIKoZI
    hvcNAwICAgCAMA4GCCqGSIb3DQMEAgIAgDALBglghkgBZQMEASowCwYJYIZIAWUD
    BAEtMAsGCWCGSAFlAwQBAjALBglghkgBZQMEAQUwBwYFKw4DAgcwCgYIKoZIhvcN
    AwcwHQYDVR0OBBYEFDxkdF2yDXR+bnfqKAND0TkLO14cMB8GA1UdIwQYMBaAFACG
    /uVsAvxdtKvqz1B3yIHKd6qWMIHcBgNVHR8EgdQwgdEwgc6ggcuggciGgcVsZGFw
    Oi8vL0NOPWxjbXRlc3QtTENNLURDLVdJTlNSVi1DQSxDTj1sY20tZGMtd2luc3J2
    LENOPUNEUCxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxD
    Tj1Db25maWd1cmF0aW9uLERDPWxjbXRlc3QsREM9bGFuP2NlcnRpZmljYXRlUmV2
    b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Qb2lu
    dDCBygYIKwYBBQUHAQEEgb0wgbowgbcGCCsGAQUFBzAChoGqbGRhcDovLy9DTj1s
    Y210ZXN0LUxDTS1EQy1XSU5TUlYtQ0EsQ049QUlBLENOPVB1YmxpYyUyMEtleSUy
    MFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRpb24sREM9bGNtdGVz
    dCxEQz1sYW4/Y0FDZXJ0aWZpY2F0ZT9iYXNlP29iamVjdENsYXNzPWNlcnRpZmlj
    YXRpb25BdXRob3JpdHkwRQYDVR0RBD4wPKAfBgkrBgEEAYI3GQGgEgQQT/a0Jjho
    UEuS4nyMtGIpx4IZbGNtLWRjLXdpbnNydi5sY210ZXN0LmxhbjBPBgkrBgEEAYI3
    GQIEQjBAoD4GCisGAQQBgjcZAgGgMAQuUy0xLTUtMjEtMTcwMDY2MDMwMS0yODM3
    MzkzNDYwLTE1MTc1MjQ2MjktMTAwMTANBgkqhkiG9w0BAQsFAAOCAQEAc5Hd2UM1
    Xd7A1SNpI9i9oFGeQrtvz80KbKdKBadMPtlfAMQviZecCxTF9BcWbBa/gMljK2Ol
    MZ/9RfTYBTESmMJMwjM8nGPp9W0570cFp+pzNJ3V4Wj1U/yi8AMIegg7E8t0+u9g
    o+RSGTud3+UOiFyVrIdrSYo3Bz2wq9axAkDEwN5JpmWmnxC8OqXqmeeWSG7AzJwu
    B5bGy+GaTj+ytSR8g6+TgZDOaOeEYm7XAVSMxVPL0HD7xozgNBfSbUuheV5oryY9
    x2tN3YE1IbA1U9rqRNAegqVaG60swzWltQbO0PRWuw8rBa8Ir+lpZOn4qlmJ94CS
    WxTZ8YUs0ioM/w==
    -----END CERTIFICATE-----

Внесение параметров конфигурации в настройки бэкенда

В файле конфигурации бэкенда application.properties задайте следующие параметры конфигурации:

lcm.inventory.ldap.datasource[i].name=<datasource-alias>
lcm.inventory.ldap.datasource[i].host=<ldap-server-address>
lcm.inventory.ldap.datasource[i].port=<ldap-port>
lcm.inventory.ldap.datasource[i].username=<service-account-name>
lcm.inventory.ldap.datasource[i].password=<service-account-password>
lcm.inventory.ldap.datasource[i].ssl=true
lcm.inventory.ldap.datasource[i].ssl-certificate=<path-to-certificate-file>
lcm.inventory.ldap.datasource[i].base-dn=<base-DN>

Пример:

lcm.inventory.ldap.datasource[0].name=lcmtest.lan
lcm.inventory.ldap.datasource[0].host=10.31.0.29
lcm.inventory.ldap.datasource[0].port=636
lcm.inventory.ldap.datasource[0].username=vlev@lcmtest
lcm.inventory.ldap.datasource[0].password=Qwerty123
lcm.inventory.ldap.datasource[0].ssl=true
lcm.inventory.ldap.datasource[0].ssl-certificate=/opt/inno-osmaks-core/ad_ldap_cert.crt
lcm.inventory.ldap.datasource[0].base-dn="DC=lcmtest,DC=lan"