Privatus maršrutizavimas nusprendžia, kas pasiekia serverį; OAuth perdavimo taisyklės nusprendžia, kaip keliauja kiekvienas pranešimas. Naršyklė, autorizacijos serveris, žetono galinis taškas ir išteklių serveris gali visi būti už to paties VPN ir vis tiek keistis pranešimais skirtingais ruožais. Kiekvienas ruožas turi savo perdavimo reikalavimą, ir VPN nė vieno jų nesušvelnina. VPN riba ir protokolo riba yra dvi skirtingos linijos.

Sprendimą priimti lengviau, jei nustojate klausti, ar tinklas patikimas, ir pradedate klausti, koks mainai kerta kokią ribą.

Spręskite pagal ruožą, o ne pagal tinklą

Surašykite galinius taškus atskirai: autorizacijos galinis taškas, žetono galinis taškas, peradresavimo URI, išteklių serverio URL, TLS pabaigos taškas ir VPN tarpinė. Tada pažymėkite, kuri šalis pradeda kiekvieną užklausą ir kur eina atsakymas.

VPN, kuris baigiasi tarpinėje, šifruoja atkarpą iki tos tarpinės. Užklausa gali toliau eiti kaip paprastas HTTP už jos, ir ta likusi atkarpa netapo HTTPS todėl, kad ankstesnė atkarpa buvo užšifruota. Būtent tas tęsinys yra ruožas, kuris rūpi protokolui. Pirmojo šuolio užšifravimas nepadaro antrojo šuolio saugaus.

Perdavimas taip pat neša paslaugos tapatybės patikrą. Naršyklė tikrina programos URL sertifikatą; VPN neatlieka šio patikrinimo naršyklės vardu ir nepadaro nepatikrinto galinio taško priimtino. Sertifikatas įvardija galinį tašką, kurį klientas mano kviečiąs. Tunelis į tarpinę nepervardija to galinio taško ir jo netikrina.

Autorizacijos atsakymas ir peradresavimo URI

Dabartinė geriausia OAuth saugumo praktika draudžia perduoti autorizacijos atsakymus neužšifruotais ryšiais. Tai apima peradresavimą, kuris neša autorizacijos kodą ar žetonus atgal klientui, ne tik pradinę užklausą.

Ta pati gairė neleidžia HTTP peradresavimo URI, išskyrus nurodytą native kliento loopback atvejį. Vidinis mazgo vardas nesukuria naujos išimties, o DNS vardas, kuris sprendžiamas tik VPN viduje, vis tiek yra HTTP URL, jei schema taip sako. Tikrinkite schemą registruotame URI, ne tik mazgo vardą.

Užregistruokite tikslią HTTPS peradresavimo URI autorizacijos serveryje ir palikite sertifikatų tikrinimą įjungtą kliente. Kūrimo spartusis kelias, kuris slopina HTTPS reikalavimą, sukuria srautą, kuris elgiasi kitaip nei produkcinė konfigūracija, kurią jis turėtų modeliuoti.

Žetono galinis taškas ir užklausos su nešėjo žetonu

Žetono užklausa neša prisijungimo duomenis arba kodą, kurį galima iškeisti į prieigą. Siunčiant ją neužtikrintu ruožu atskleidžiama medžiaga, kuria išteklių serveris vėliau pasitikės, net jei aplinkinis tinklas privatus. Tarpinis serveris, kuris gali perskaityti užklausą, gali perskaityti ir jos nešamus prisijungimo duomenis.

Užklausoms į išteklius su nešėjo žetonu RFC 6750 laiko TLS privalomu įgyvendinti ir naudoti pagal tą specifikaciją. Biuro potinklio pavadinimas patikimu nėra bendra protokolo išimtis, kurios reikia atviro teksto nešėjo diegimui.

Abiem ruožams naudokite dokumentuotus saugius galinių taškų URL. Jei biblioteka atsisako kviesti HTTP žetono galinį tašką, tas atsisakymas yra veikianti specifikacija, o ne konfigūracijos klaida, kurią reikia apeiti. Įrašykite tą URL kliento konfigūracijoje, o ne išveskite jį vykdymo metu.

Kur baigiasi TLS ir ką tai palieka

Jei TLS baigiasi įgaliotame priekiniame sluoksnyje, įvardykite tą sluoksnį ir peržiūrėkite kelią nuo jo iki programos. Priekinis sluoksnis tampa atsakingas už persiuntimą, pasitikėjimą ir konfidencialumą likusioje atkarpoje, o palaikoma paslaugos architektūra turėtų aprašyti tą išdėstymą.

VPN kitur kelyje neišsprendžia tų atsakomybių. Jis taip pat nepasako, ar programos URL, kurį mato naršyklė, atitinka sertifikatą, kurį pateikia priekinis sluoksnis.

Vidiniam diegimui užrašykite pabaigos tašką ir tapatybę, kurią jis pateikia. Priekinis sluoksnis, kuris baigia TLS su kito vardo sertifikatu, sukuria naršyklės įspėjimą, kurį operatoriai dažnai nuslopina, o ne ištaiso.

Native loopback išimtis yra siaura

Loopback peradresavimo išimtis susijusi su atgaliniu iškvietimu vartotojo pačiame įrenginyje, kur klientas ir naršyklė dalijasi tuo įrenginiu. Toks išdėstymas priklauso vieno įrenginio atgaliniam iškvietimui ir nesuteikia teisės aptarnauti įprasto autorizacijos serverio ar žetonus nešančio API per HTTP biuro potinkliui.

Laikykite išimtį apribotą kliento tipu ir atgaliniu iškvietimu, kurį ji aprašo. Jos taikymas žiniatinklio programai, bendrai vidinei paslaugai ar peradresavimo URI kitame mazge keičia diegimą, o ne išimtį.

Išbandykite tikrąjį srautą kiekvienoje riboje ir palyginkite jį su kliento tipu. Veikiantis peradresavimas nieko nesako apie tai, ar kiekvienas ruožas, nešęs žetoną, naudojo reikiamą apsaugą, o žalia VPN piktograma nieko nesako apie kitos užklausos schemą.

Susiję straipsniai