From 40a7f10d88088922726707f3cb8431f46a6d81ee Mon Sep 17 00:00:00 2001 From: fontvielle Date: Thu, 22 Oct 2026 12:46:28 +0300 Subject: [PATCH] =?UTF-8?q?AD:=20=D0=BA=D0=B0=D0=BA=20=D1=81=D0=BE=D0=B7?= =?UTF-8?q?=D0=B4=D0=B0=D1=82=D1=8C=20=D1=81=D0=BB=D1=83=D0=B6=D0=B5=D0=B1?= =?UTF-8?q?=D0=BD=D1=83=D1=8E=20=D1=83=D1=87=D1=91=D1=82=D0=BD=D1=83=D1=8E?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D1=8C=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?bj=20=E2=80=94=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20=D0=B8?= =?UTF-8?q?=20=D0=B8=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=86=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit «Пользователи и вход → Подключить домен»: блок с инструкцией и готовым скриптом PowerShell (svc-bj, пароль не истекает, группы bj-admins / bj-operators / bj-risk / bj-viewers для ролей) и запасной командой dsadd; домен и DN подставляются из найденного bj домена. Кнопка «Скопировать». Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn --- .../web/templates/part_accounts.html | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/internal/lkgateway/web/templates/part_accounts.html b/internal/lkgateway/web/templates/part_accounts.html index 0228365..5c748d3 100644 --- a/internal/lkgateway/web/templates/part_accounts.html +++ b/internal/lkgateway/web/templates/part_accounts.html @@ -82,6 +82,38 @@ {{if $D}}{{$bu = $D.BindUser}}{{$pw = ""}}{{if $D.HasPassword}}{{$pw = "введён"}}{{end}}{{$fs = $D.Form.Server}}{{$fd = $D.Form.Domain}}{{$adv = $D.Form.Adv}}{{end}}

Введите учётную запись домена и пароль — домен и его контроллеры bj найдёт сам. Прав администратора домена не нужно; лучше отдельная служебная запись (например svc-bj): bj хранит её пароль, чтобы искать сотрудников.

+
Как создать служебную учётную запись для bj +
+

bj читает AD обычной доменной учётной записью: проверяет пароль пользователя и его группы. Прав администратора домена ей не нужно — читать каталог могут все пользователи домена. Создаёт запись администратор домена:

+
    +
  1. На контроллере домена (или компьютере с RSAT) откройте PowerShell от имени администратора домена.
  2. +
  3. Скопируйте и выполните скрипт ниже — он спросит пароль для svc-bj.
  4. +
  5. Добавьте сотрудников в группы bj-admins, bj-operators, bj-risk, bj-viewers — по ним bj назначит роли (группы можно переназначить после подключения).
  6. +
  7. Здесь введите svc-bj@{{with $A.ADDomain}}{{.}}{{else}}ваш-домен{{end}} и пароль — «Подключить».
  8. +
+
# Bridge&Join: служебная учётная запись для чтения AD и группы ролей
+Import-Module ActiveDirectory
+$dom  = Get-ADDomain                      # домен {{with $A.ADDomain}}{{.}}{{else}}ваш-домен{{end}}
+$name = "svc-bj"
+$ou   = $dom.UsersContainer               # или своё OU, например "OU=Service Accounts,$($dom.DistinguishedName)"
+$pwd  = Read-Host "Пароль для $name (длинный, случайный)" -AsSecureString
+New-ADUser -Name $name -SamAccountName $name -UserPrincipalName "$name@$($dom.DNSRoot)" `
+  -Path $ou -AccountPassword $pwd -Enabled $true `
+  -PasswordNeverExpires $true -CannotChangePassword $true `
+  -Description "Bridge&Join: чтение AD для входа пользователей (без прав администратора)"
+# Группы, по которым bj назначает роли
+@{ "bj-admins" = "администраторы bj"; "bj-operators" = "операторы депозитария";
+   "bj-risk" = "риск-менеджеры (НПР)"; "bj-viewers" = "наблюдатели" }.GetEnumerator() | ForEach-Object {
+  if (-not (Get-ADGroup -Filter "Name -eq '$($_.Key)'")) {
+    New-ADGroup -Name $_.Key -GroupScope Global -GroupCategory Security -Path $ou -Description "Bridge&Join: $($_.Value)"
+  }
+}
+Write-Host "Готово. В bj: учётная запись $name@$($dom.DNSRoot)"
+

Без модуля ActiveDirectory (cmd от администратора домена, * — запросит пароль):

+
dsadd user "CN=svc-bj,CN=Users,{{with $A.ADBaseDN}}{{.}}{{else}}DC=corp,DC=example,DC=ru{{end}}" -samid svc-bj -upn svc-bj@{{with $A.ADDomain}}{{.}}{{else}}ваш-домен{{end}} -pwd * -pwdneverexpires yes -canchpwd no -desc "Bridge&Join: чтение AD"
+

Рекомендуем: запретить этой записи интерактивный вход и вход по RDP (групповая политика «Запретить локальный вход», «Запретить вход через службу удалённых рабочих столов») — она нужна только для чтения каталога. Пароль bj хранит у себя; при смене пароля в AD обновите его здесь.

+
+
@@ -104,6 +136,8 @@ fetch('/admin/setup/users/ad-discover',{cache:'no-store',headers:{'Accept':'application/json'}}).then(function(r){return r.json()}).then(function(d){ var x=d.found; out.hidden=false; + if(x&&x.domain){ document.querySelectorAll('.ad-svc-dom').forEach(function(e){ e.textContent=x.domain; }); + document.querySelectorAll('.ad-svc-dn').forEach(function(e){ e.textContent=x.domain.split('.').map(function(p){return 'DC='+p}).join(','); }); } if(d.ok){ out.className='ad-st ad-st-ok'; out.innerHTML='
Найден домен '+esc(x.domain)+'контроллеры: '+x.dcs.map(esc).join(', ')+' · '+esc(x.from)+'
'; f.ad_domain.placeholder=x.domain+' — найден сам'; f.ad_server.placeholder=x.dcs[0]+' — найден сам'; return; } out.className='ad-st ad-st-warn'; out.innerHTML='
'+(x&&x.domain?'Домен '+esc(x.domain)+' найден, но его контроллеры — нет':'Домен сам не нашёлся')+''+(x&&x.domain?'укажите контроллер в расширенных настройках ниже':'укажите домен в расширенных настройках ниже или впишите учётную запись с доменом: svc-bj@corp.example.ru')+'
';