LINUX.ORG.RU
ФорумAdmin

Конфигурация авторизации 1C через WEB с помощью Active Directory, SSO

 


0

1

Коллеги, здравствуйте. Из прошлой темы, я наконец-то настроил SSO для толстого\тонкого клиента. Пошел дальше, публикация WEB. Теперь тут не получается с SSO.

  1. Опирался на статью: https://infostart.ru/1c/articles/2440678/
  2. Debian GNU/Linux 12 (bookworm). 1C 8-8.3.27.1719. libapache2-mod-auth-gssapi 1.6.4-3. Apache/2.4.65 (Debian)
  3. База опубликована была командой:
/opt/1cv8/x86_64/8.3.27.1719/webinst \
-publish \
-apache24 \
-wsdir base_1c \
-dir /var/www/1C/base \
-connstr "Srvr=t03-1c11.fd.local;Ref=test" \
-descriptor /var/www/1C/default.vrd \
-confpath /etc/apache2/apache2.conf

Конфиг apache2.conf:

# 1c publication
Alias "/base_1c" "/var/www/1C/base/"
<Directory "/var/www/1C/base/">

   AuthType GSSAPI
   AuthName "Kerberos Login"
   Require valid-user

   GssapiCredStore keytab:/etc/1C/http/http1cv8.keytab
   GssapiCredStore client_keytab:/etc/1C/http/http1cv8.keytab
   GssapiCredStore ccache:FILE:/var/krb/ktk123
   GssapiUseS4U2Proxy On
   GssapiImpersonate On
   GssapiLocalName On
   GssapiDelegCcacheDir /var/cred/

   AllowOverride All
   Options SymLinksIfOwnerMatch
   Require valid-user
   SetHandler 1c-application

   ManagedApplicationDescriptor "/var/www/1C/base/default.vrd"

</Directory>
  1. Keytab генерация: ktpass -princ HTTP/t03-1c11.fd.local@FD.LOCAL -mapuser svc_http1cv8 -pass «myhardpass» -ptype KRB5_NT_PRINCIPAL -crypto AES256-SHA1 -out C:\keytab\http1cv8.keytab
Get-ADUser svc_http1cv8 -Properties msDS-KeyVersionNumber,userPrincipalName,servicePrincipalName|Select SamAccountName,msDS-KeyVersionNumber,userPrincipalName,servicePrincipalName

SamAccountName msDS-KeyVersionNumber userPrincipalName               servicePrincipalName
-------------- --------------------- -----------------               --------------------
svc_http1cv8                       3 HTTP/t03-1c11.fd.local@FD.LOCAL {HTTP/t03-1c11.fd.local}

https://i.ibb.co/fY0NCbST/image.png

https://i.ibb.co/6RXCxqSp/image.png

  1. Логи Apache:
10.96.3.122 - MikhalevskyAA [01/Oct/2025:15:08:00 +0300] "GET /base_1c/ru/ HTTP/1.1" 200 1774 "http://t03-1c11.fd.local/base_1c/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0"
10.96.3.122 - - [01/Oct/2025:15:08:00 +0300] "POST /base_1c/ru/e1cib/login?version=8.3.27.1719&nooida&vl=ru&clnId=36a665fa-869c-453e-bc1d-474419bc7305 HTTP/1.1" 401 713 "http://t03-1c11.fd.local/base_1c/ru/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0"
  1. cat /opt/1cv8/x86_64/8.3.27.1719/conf/logcfg.xml
<?xml version="1.0"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="/var/log/1c" history="7">
    <event>
      <eq property="name" value="conn"/>
    </event>
    <event>
      <eq property="name" value="excp"/>
    </event>
    <event>
      <eq property="name" value="auth"/>
    </event>
    <property name="all"/>
  </log>
</config>
  1. Лог rphost 1С:
09:38.654001-0,EXCP,2,level=WARNING,process=rphost,p:processName=test,OSThread=316793,t:clientID=39,t:applicationName=WebServerExtension,t:computerName=t03-1c11.fd.local,t:connectID=8,SessionID=1993,AppID=WebClient,Exception=a01f465c-ed70-442e-ada5-847668d7a41c,Descr='src/vrsbase/src/VResourceInfoBaseServerImpl.cpp(2766):
a01f465c-ed70-442e-ada5-847668d7a41c: Неверно указан пользователь или пароль
  1. Профиль уз указан так: https://i.ibb.co/WNP4mCXM/image.png

  2. При этом, тонкий клиент меня аутентифицирует по SSO без проблем, но для него отдельный keytab с отдельной уз.

И если вручную зайти:

24:45.006006-0,CONN,2,level=INFO,process=rphost,OSThread=317819,t:clientID=34,Txt=Srvr: DstUserName1: MikhalevskyAA@FD.LOCAL(FD.LOCAL\MikhalevskyAA) (linux client)
24:45.006007-0,CONN,2,level=INFO,process=rphost,OSThread=317819,t:clientID=34,Txt=eAPSEContinue

работает, подтягивает уз, а SSO не хочет.

  1. /etc/krb5.conf:
[libdefaults]
    default_realm = FD.LOCAL

    # ключи для Apache (mod_auth_gssapi)
    default_keytab_name =  /etc/1C/http/http1cv8.keytab
    default_client_keytab_name = /etc/1C/http/http1cv8.keytab

    dns_lookup_kdc = true
    dns_lookup_realm = true
    rdns = false

    forwardable = true
    ticket_lifetime = 24h
    renew_lifetime = 7d

[realms]
FD.LOCAL = {
   kdc = S03-DC11.fd.local
   admin_server = S03-DC11.fd.local
}
[domain_realm]
    .fd.local = FD.LOCAL
    fd.local  = FD.LOCAL
    .FD.LOCAL = FD.LOCAL
    FD.LOCAL  = FD.LOCAL

То есть Apache получает мои креды, но 1С не принимает я полагаю. Не понимаю, какой формат он хочет или в чем проблема.



Последнее исправление: Andrei9385 (всего исправлений: 3)