Sziasztok.
Adott egy samba (ad dc), egy kopano webappal. Miként lehet biztosítani a felhasználók felé a jelszóváltoztatást? (debian 10 mindkettő)
Nem windows-on keresztül fogják elérni a webapp-ot, tehát valamilyen másik akár alternatív AD-s jelszóváltoztatási eljárás kéne.
Tud rá valaki valami megoldást?
Előre is kösz a válaszokat.
- 239 megtekintés
Hozzászólások
senki?
- A hozzászóláshoz be kell jelentkezni
Keresve valami webest, ezt találtam:
https://github.com/jirutka/ldap-passwd-webui
--
Légy derűs, tégy mindent örömmel!
- A hozzászóláshoz be kell jelentkezni
Azért ez nem lesz ilyen egyszerű...
Gyakorlatilag a teljes Windows-os authot újra kell implementálnod a jelszócserélő cuccban, egy részét meg is kell kerülnöd (pl. ha lejárt a jelszava, akkor AFAIK az ldap-tól nem fogod tudni megtudni, hogy helyes-e a beírt régi jelszó, mert a bind kéréseket el fogja hajtani, szóval az auth request előtt egy másik userrel belépve ki kellene ütnöd a lejárt jelszót flag-et). Én inkább marha óvatosan egy smbpasswd hívás köré tennék egy webui-t, nem az ldaphoz. És tényleg _nagyon_ óvatosan, pl. figyelve, hogy ne lehessen arra használni, hogy bárkinek kizárd a fiókját (pl. 1/óra/user próbálkozásra limitálva).
BlackY
"Gyakran hasznos ugyanis, ha számlálni tudjuk, hányszor futott le már egy végtelenciklus." (haroldking)
- A hozzászóláshoz be kell jelentkezni
Szerintem működhet a web-oldalon jelszómódosítás - csak külön "service-user" -el kell az LDAP módosítást csinálni, nem a felhasználóval.
Persze kell bele pár filter is, ha olyan felhasználót-t akarna módosítani akit nem kéne:
-benne van-e az adott csoportban vagy OU-ban
Egyszerű PHP scriptben is meg lehet írni.
- A hozzászóláshoz be kell jelentkezni
csak külön "service-user" -el kell az LDAP módosítást csinálni, nem a felhasználóval.
Ez működhet (szigorúan TLS felett [vagy smb.conf-ban a valamelyik sign paraméter false-ra... man smb.conf :) ] unicodePwd modify, UTF-16-ba a jelszó, elejére és végére egy " - ne kérdezd, miért, mert csak, az MS így döntött :) ), csak előtte valahogy tudnod kéne ellenőrizni a régi jelszót. Kiolvasni viszont nem tudod az unicodePwd attribútumot, hogy te magad ellenőrizd, úgyhogy - ha ldapon belül akarsz maradni - marad, hogy rápróbálsz egy bind-ra a kapott usernévvel/jelszóval. Amit viszont ha már lejárt a user jelszava, el fog hajtani.
Tisztán LDAP-on:
* Service user: kikeresed a usert, megnézed a pwdLastSet attribját, hogy nincs-e beikszelve a kötelező jelszóváltás (úgy rémlik, ilyenkor pwdLastSet=0). Ha pdwLastSet=0, akkor még a userAccountControl bitset megnézed, hogy nincs-e belőve a PASSWORD_NEVER_EXPIRES flag (úgy rémlik ő a 65536, de nem esküszöm meg rá), ha ez meg van, akkor nem gond a pwdLastSet. Ezután kikukázod, hogy mennyi idő után kéne jelszót frissítenie (na ezt passzolom, hogy merre van), ha pwdLastSet + intervallum < most, akkor a service user nevében a pwdLastSet-et átállítod egy frissebb értékre, hogy
* Bind a user nevében. Ha a szerver elhajt a francba, akkor pwdLastSet vissza az eredeti értékére, valószínűleg rossz a jelszó (lehet még account lockout, letiltott account, smartcard-kényszerített fiók stb.) és hibaüzit a usernek. Ha a szerver elfogadja és sikeres a bind, akkor választhatsz, hogy itt cserélsz jelszót, vagy
* Service user: megcsinálod a jelszó cserét.
És ezek csak azok a case-ek, amik fejből eszembe jutottak :) Ezeket mind megúszod, ha RPC-n (smbpasswd) / vagy Kerberos kpasswd-vel cserélsz jelszót.
BlackY
"Gyakran hasznos ugyanis, ha számlálni tudjuk, hányszor futott le már egy végtelenciklus." (haroldking)
- A hozzászóláshoz be kell jelentkezni