OAuth binne 'n VPN: watter bene vereis steeds TLS
'n VPN verander wie 'n bediener bereik, nie hoe OAuth-boodskappe reis nie. Besluit per been: magtigingsantwoord, tokenversoek en draer-oproep.
Private roetering besluit wie die bediener bereik; OAuth se vervoerreëls besluit hoe elke boodskap reis. 'n Blaaier, 'n magtigingsbediener, 'n token-eindpunt en 'n hulpbronbediener kan almal agter dieselfde VPN sit en tog boodskappe oor verskillende bene uitruil. Elke been het sy eie vervoervereiste, en die VPN verslap nie een daarvan nie. Die VPN-grens en die protokolgrens is verskillende lyne.
Die besluit is makliker as jy ophou vra of die netwerk vertrou word en eerder vra watter uitruiling watter grens oorsteek.
Besluit per been, nie per netwerk nie
Skryf die eindpunte afsonderlik neer: magtigings-eindpunt, token-eindpunt, aanstuur-URI, hulpbronbediener-URL, TLS-beëindigingspunt en VPN-gateway. Merk dan watter party elke versoek begin en waar die antwoord heen gaan.
'n VPN wat by 'n gateway eindig, versleutel die segment tot by daardie gateway. Die versoek kan daaragter as gewone HTTP voortgaan, en daardie oorblywende been het nie HTTPS geword omdat 'n vroeëre segment versleutel is nie. Daardie voortsetting is die been waaroor die protokol hom bekommer. Om die eerste sprong te versleutel maak nie die tweede sprong veilig nie.
Die vervoer dra ook 'n diensidentiteitskontrole. Die blaaier valideer die sertifikaat vir die toepassings-URL; 'n VPN voer nie daardie validering namens die blaaier uit nie, en dit maak 'n ongevalideerde eindpunt nie aanvaarbaar nie. Die sertifikaat noem die eindpunt wat die kliënt dink hy roep. 'n Tonnel na 'n gateway hernoem nie daardie eindpunt nie en valideer dit ook nie.
Die magtigingsantwoord en die aanstuur-URI
OAuth se jongste beste praktyk vir sekuriteit verbied die versending van magtigingsantwoorde oor onversleutelde verbindings. Dit dek die aansturing wat die magtigingskode of tokens na die kliënt terugdra, nie net die aanvanklike versoek nie.
Dieselfde leiding verbied HTTP-aanstuur-URI's, behalwe vir die gespesifiseerde loopback-geval van 'n native kliënt. 'n Interne gasheernaam skep nie 'n nuwe uitsondering nie, en 'n DNS-naam wat net binne die VPN opgelos word, is steeds 'n HTTP-URL as die skema so sê. Kontroleer die skema in die geregistreerde URI, nie net die gasheernaam nie.
Registreer die presiese HTTPS-aanstuur-URI by die magtigingsbediener en hou sertifikaatvalidering aan op die kliënt. 'n Ontwikkelingskortpad wat die HTTPS-vereiste onderdruk, lewer 'n vloei wat anders optree as die produksiekonfigurasie wat dit veronderstel is om te modelleer.
Die token-eindpunt en draer-token-versoeke
Die tokenversoek dra geloofsbriewe of 'n kode wat vir toegang geruil kan word. Om dit oor 'n onbeskermde been te stuur, stel materiaal bloot wat die hulpbronbediener later sal vertrou, selfs al is die omliggende netwerk privaat. 'n Proxy wat die versoek kan lees, kan ook die geloofsbrief lees wat dit dra.
Vir hulpbronversoeke met draer-tokens beskou RFC 6750 TLS as verpligtend om te implementeer en te gebruik vir daardie spesifikasie. Om die kantoor-subnet as vertrou te noem, is nie die algemene protokoluitsondering wat 'n ontplooiing met draer-tokens oor gewone teks nodig het nie.
Gebruik die gedokumenteerde veilige eindpunt-URL's vir albei bene. As 'n biblioteek weier om 'n HTTP-token-eindpunt te roep, is daardie weiering die spesifikasie wat werk, nie 'n konfigurasiefout om te omseil nie. Teken daardie URL in die kliëntkonfigurasie aan eerder as om dit tydens looptyd af te lei.
Waar TLS eindig en wat dit oorlaat
As TLS by 'n gemagtigde frontend eindig, noem daardie frontend en hersien die pad van dit na die toepassing. Die frontend word verantwoordelik vir aanstuur, vertroue en vertroulikheid op die oorblywende segment, en die diens se ondersteunde argitektuur behoort daardie reëling te beskryf.
'n VPN elders in die pad besleg nie daardie verantwoordelikhede nie. Dit sê ook nie of die toepassings-URL wat die blaaier sien, ooreenstem met die sertifikaat wat die frontend aanbied nie.
Teken vir 'n interne ontplooiing die beëindigingspunt en die identiteit wat dit aanbied aan. 'n Frontend wat TLS met 'n sertifikaat vir 'n ander naam beëindig, skep 'n blaaierwaarskuwing wat operateurs dikwels onderdruk in plaas daarvan om dit reg te maak.
Die native loopback-uitsondering is eng
Die loopback-aanstuuruitsondering handel oor 'n terugroep op die gebruiker se eie toestel, waar die kliënt en die blaaier daardie toestel deel. Daardie reëling hoort by 'n terugroep op een toestel, en dit gee nie lisensie om 'n gewone magtigingsbediener of 'n API met tokens oor HTTP aan 'n kantoor-subnet te bedien nie.
Hou die uitsondering beperk tot die kliënttipe en die terugroep wat dit beskryf. Om dit op 'n webtoepassing, 'n gedeelde interne diens of 'n aanstuur-URI op 'n ander gasheer toe te pas, verander die ontplooiing, nie die uitsondering nie.
Toets die werklike vloei by elke grens en vergelyk dit met die kliënttipe. 'n Werkende aansturing sê niks oor of elke been wat 'n token gedra het, die vereiste beskerming gebruik het nie, en 'n groen VPN-ikoon sê niks oor die skema van die volgende versoek nie.