Vi finas la MFA-peton, la tunelo leviĝas, kaj fermo de la terminalo faligas ankaŭ la konekton. Tio estas problemo de superrigardo, ne de aŭtentikigo, kaj OpenConnect jam havas la ŝaltilon, kiu solvas ĝin. La solvo estas lasi la klienton forkigi en la fonon post kiam la starto finiĝis, kiam la interaga parto vere pasis. Sekvas serio de kontroloj: trairu ilin laŭorde kaj haltu ĉe la unua, kiu ne validas por via pordego.

Konfirmu, kion la pordego postulas ĉe ensaluto

Antaŭ ol tajpi komandon, notu la vojon de legitimiloj, kiun la deplojo devigas. Nur atestilo, pasvorto plus ĵetono, kaj retumila vojaĝo tra SAML-provizanto kondutas malsame, kaj fona reĝimo ne povas preterpasi iun ajn. La opcio ŝanĝas tion, kio okazas post la starto, neniam tion, kio okazas dum ĝi.

La tentiga solvo estas aŭtomatigi la peton. Ĉirkaŭilo, kiu tajpas fiksan respondon kiam ĝi rekonas pasvortpeton, rompiĝas en la momento, kiam la pordego postulas unufojan kodon, kaj ĝi lasas legitimilon en dosiero legebla de aliaj kontoj. Se homo devas aprobi la sesion, tenu la homon en la ciklo.

Rulu la unuan sesion en la malfono kaj legu la eligon

Konektiĝu unufoje normale kaj lasu la tutan manpremon presiĝi. Notu la protokolon uzatan, la vojon de atestilo aŭ ĵetono, la tunelan adreson atribuitan de la servilo, kaj ĉiun averton antaŭ ol la konekto akceptiĝas. Tiu protokolo estas via bazlinio kaj la sola malmultekosta maniero poste distingi klientan problemon de pordega ŝanĝo. Konservu ĝin ekster la terminala bufro.

Poste ripetu la saman vokon kun fona reĝimo kaj aldonita PID-dosiero, ekzemple openconnect --background --pid-file /run/openconnect.pid vpn.example.net, tenante la protokolon kaj aŭtentikigajn opciojn postulatajn de via pordego sur la sama linio. La manlibro de OpenConnect priskribas tiun opcion kiel daŭrigon en la fono post finiĝo de la starto, kaj ĝuste tial la interaga fazo devas finiĝi unue.

Faru la ruliĝantan procezon trovebla kaj haltigebla

PID-dosiero estas pruvo nur dum ĝi kongruas kun viva procezo. Metu ĝin en dosierujon posedatan de la serva konto, kaj komparu la registritan numeron kun la proceza tabelo antaŭ ol sendi signalon. Restartoj kaj kraŝoj lasas la dosieron, kaj kaduka dosiero estas la kutima kaŭzo, ke haltskripto raportas sukceson dum la tunelo ankoraŭ staras. Traktu la kontrolon kiel parton de la halta procedo, ne kiel laŭvolan paŝon.

Sendu signalon al la konfirmita PID, poste konfirmu, ke la tunela interfaco vere malaperis anstataŭ fidi la eliran staton. Se la kliento bezonas altigitajn privilegiojn por agordi la interfacon, la signalo devas veni de konto rajtigita sendi ĝin.

Ne staku fonan reĝimon sub superrigardo

systemd kaj similaj superrigardoj atendas posedi la procezon, kiun ili lanĉis, kaj tial kliento, kiu forkas for, konfuzas ilin. La superrigardo vidas lanĉilon eliri dum la reala konekto vivas plu, do restartiga logiko, statraportado kaj haltaj tempolimoj priskribas ion, kio jam ne veras. Skribu la unuon en la subtenata malfona aranĝo kaj lasu la superrigardon fari la demonan laboron.

Rezervu --background por sesioj, kiujn homo komencas kaj poste foriras. Se la postulo estas tunelo ekzistanta antaŭ ol iu ensalutas, la mankanta peco estas aprobita neinteraga identeco plus plano por ĝia renovigo, kaj neniu komandlinia flago provizas iun el ili. Aldoni la flagon al starta skripto produktas tunelon, kiu silente malsukcesas ĉe la unua eksvalidiĝinta legitimilo.

Traktu la sesian kuketon kiel legitimilon

OpenConnect dokumentas apartan aŭtentikigan fazon per --authenticate, kaj la rezulta materialo povas esti redonita per --cookie-on-stdin. Tiu paro ekzistas por integra laboro, kaj tio, kion ĝi produktas, estas same sentema kiel la pasvorto, kiu ĝin kreis.

Tenu la valoron ekster ŝela historio, ekster protokoloj kaj ekster ĉiu bileto, kiun vi malfermas. Transdona skripto ankaŭ devas konservi la konfirmitajn finpunktojn, kiujn la kliento ricevis kun la kuketo; forgesu tion kaj posta rulo povas konektiĝi al gastiganto, kiun vi neniam aŭtentikigis, kio estas pli malbona ol konekto, kiu simple malsukcesas.

Trairu la liston antaŭ ol fermi la terminalon

Kvar aferoj devas veri: la interaga ensaluto finiĝis en la malfono, la PID-dosiero montras procezon, kiun vi konfirmis, la superrigarda demando estas solvita unudirekte aŭ alidirekte, kaj la kuketo havas konservan planon, kiu ne estas ordinara tekstdosiero. Kiam ĉiuj kvar validas, foriri de la terminalo estas sekure kaj la tunelo daŭre funkcias.

Se unu malsukcesas, riparu tiun eron antaŭ ol tuŝi la aliajn, ĉar la ceteraj kontroloj ne povas kompensi ĝin. Konservu ankaŭ la malfonan protokolon de via unua rulo: la venontan fojon, kiam la tunelo falos sen averto, ĝuste tiu bazlinio apartigos pordegan ŝanĝon de klienta.

Rilataj artikoloj