Access Server ignoriše post_auth skriptu koju ste uredili na disku
Uređivanje datoteke post_auth na disku ne čini ništa: Access Server izvršava kopiju iz svoje konfiguracijske baze podataka. Pratite put odluke i sacli naredbe.
Uređena mac.py koja ništa ne menja uobičajen je prvi simptom. Datoteka na disku nije ono što Access Server izvršava; servis za autentifikaciju učitava skriptu iz konfiguracijske baze podataka servera, i upravo ta sačuvana kopija odlučuje o prijavi. Dok se sačuvana vrednost ne zameni, svaki test dokazuje samo to da stara skripta još radi.
Posao određuju tri uslova: da li je vrednost ikada upisana u konfiguracijsku bazu, da li je servisu naređeno da je ponovo učita, i da li se izmenjeni kod zaista izvršava pri svakoj vezi. Svaki ima drugačiji simptom, a popravljanje pogrešnog troši servisni prozor.
Datoteka je izvor, a ne pokrenuta kopija
Access Server drži post-auth skriptu pod ključem auth.module.post_auth_script. Uređivanje datoteke ažurira samo vašu radnu kopiju. Demon čita sačuvanu vrednost, pa promena ostaje nevidljiva dok ne izbrišete stari zapis i ne stavite novu datoteku na njegovo mesto. Ta sačuvana vrednost jedina je kopija koju servis za autentifikaciju pregleda.
Pročitajte je pre nego što je promenite. Ako se već poklapa sa datotekom koju ste uredili, problem nije u skladištenju i pređite na pitanje obima. Ako pokazuje stariju verziju, promena nije stigla do servisa.
./sacli -k auth.module.post_auth_script ConfigGetZamenite sačuvanu kopiju, pa je primenite
Brisanje pre upisa nije ukras. ConfigPut sa --value_file zamenjuje vrednost u jednom koraku, a ConfigDel prvo čini nemogućim da zaostane zastareo ili oštećen zapis. Sačuvajte kopiju radne skripte izvan direktorijuma skripti pre nego što počnete.
./sacli -k auth.module.post_auth_script ConfigDel
# store the file, then apply it
./sacli -k auth.module.post_auth_script --value_file=/root/post_auth.py ConfigPut
./sacli startsacli start primenjuje izmenjenu konfiguraciju na unutrašnje servise, i to je ono što novu skriptu stavlja na snagu. To nije isto kao ponovno pokretanje celog računara ili demona, i ne treba to zamenjivati time osim ako vaša promena to zahteva.
Koristite apsolutnu putanju za datoteku vrednosti i potvrdite da root može da je čita. Putanja koja se razrešava iz vašeg šela ali ne iz naloga servisa daje sačuvanu vrednost koja izgleda ispravno u ConfigGet i pada pri prvoj prijavi. Proverite sačuvani rezultat još jednom nakon sacli start, ne pre.
Obim modula ili po vezi: gde pripada upit
Python izvršava naredbe na nivou modula jednom, kada se skripta učita. Zato upit prema bazi napisan na vrhu datoteke čita tabelu pri učitavanju i zadržava taj odgovor za svaku sledeću vezu. To je drugi razlog zašto promena izgleda kao da ne radi: kod se izvršava, ali ne kada očekujete.
Stavite upit unutar rukovaoca post_auth da se izvršava za svaku autentifikaciju. Zadržite dokumentovani potpis, prilagodite rezultat autentifikacije koji rukovalac prima i vratite isti objekat umesto golog broja.
Držite i upravljanje vezom unutar rukovaoca. Veza otvorena pri uvozu može biti zatvorena od strane servera pre prve prijave korisnika, a nastala greška izgleda kao odbijene akreditive, a ne kao pokvarena skripta.
Dva puta odbijanja, jedan vlasnik
Ako je odluka lokalni upit, rezultatom upravlja Python rukovalac. Ako je spoljna HTTP provera, neka status izlaza naredbe nosi odgovor: omotač koji izlazi sa nenultim kodom odbija prijavu, a status poslednje naredbe postaje status skripte bez izričitog exit.
Držite tajnu izvan liste procesa. Datoteka čitljiva za root ili vrednost okruženja koju servis prosleđuje sigurnija je od argumenta koji svaki lokalni korisnik može pročitati iz ps. Pričvrstite krajnju tačku u promenljivu pre poziva, da previd u kucanju padne u vreme konfiguracije, a ne tokom nečije prijave. Rotirajte tu tajnu kao i svaku drugu akreditivu.
Izaberite jednog vlasnika po proveri. Skripta koja i pita bazu i poziva HTTP servis treba izričito pravilo prioriteta za slučaj kada se njih dvoje ne slažu, inače razlog odbijanja u logu neće odgovarati onome što je korisniku rečeno.
Primenite to bez zaključavanja administratora
Dve zaštite čine promenu reverzibilnom: drugi admin nalog koji ne zavisi od skripte, i poznata dobra kopija čuvana izvan direktorijuma skripti. Primenite promenu u servisnom prozoru, pa posmatrajte jednu probnu prijavu i jedno namerno odbijanje pre nego što se odspojite. Ako log pokaže sintaksnu grešku umesto odluke o autentifikaciji, sačuvana skripta je pokvarena i svaka prijava će pasti.
Dva uslova kažu čekaj: ne možete pročitati datoteku vrednosti kao root, ili nemate drugi put do admin interfejsa. Oba pretvaraju malu promenu u zaključavanje, i nijedno nije vredno testiranja na produkcionom serveru na kraju dana. Dokumentacija Access Server pokriva post-auth interfejs i njegova podržana polja.