Kumpletong gabay sa mga interceptor para sa mga Bearer token sa Angular, Android, at Spring Boot

  • Sentralisasyon ng authentication sa pamamagitan ng paggamit ng mga interceptor upang maiwasan ang pag-uulit ng code sa bawat HTTP request.
  • Pagpapatupad ng mga bidirectional security flow, mula sa token injection sa client hanggang sa JWT validation sa server.
  • Paggamit ng mga partikular na tool tulad ng HttpInterceptor sa Angular, OkHttp sa Android, at mga security filter sa Spring Boot.

Mga token ng tagapagdala

Kapag sumisid tayo sa mundo ng mga aplikasyon na nangangailangan seguridad at kontrol sa pag-accessKaraniwan sa backend na humihingi ng patunay ng pagkakakilanlan sa bawat kahilingan. Upang maiwasan ang abala ng manu-manong pagpapadala ng parehong token sa bawat kahilingan, may mga tool na tinatawag na interceptors, na nagsisilbing isang smart tollbooth kung saan maaari nating baguhin ang kahilingan bago ito mapunta sa server.

Ang malaking bentahe ng paggamit ng pamamaraang ito ay ang paggalang natin sa prinsipyo DRY (Huwag Ulitin ang Iyong Sarili)pinipigilan ang ating code na magmukhang sirang plaka. Sa pamamagitan ng sentralisadong pamamahala ng header, ginagawa nating mas mahusay ang aplikasyon. mapanatili at malinis, na nagbibigay-daan sa amin na makuha ang mga error sa buong mundo nang hindi kinakailangang punan ang bawat serbisyo ng paulit-ulit na mga bloke ng try-catch.

Pag-master ng mga interceptor sa Angular

Sa Angular ecosystem, ang isang interceptor ay karaniwang isang klase na dapat magpatupad ng interface HttpInterceptorPinipilit tayo ng interface na ito na tukuyin ang isang pamamaraan na tinatawag na interceptna tumatanggap ng kasalukuyang kahilingan at isang handler na responsable sa pagpasa ng kahilingan sa susunod na hakbang sa kadena.

Kung susubukan nating magpadala ng token nang walang mga interceptor, kakailanganin nating lumikha ng isang object na Mga HttpHeader sa bawat tawag, na isang ganap na abala. Sa pamamagitan ng pagpapatupad ng interface, magagawa natin i-clone ang kahilingan (dahil ang mga kahilingan sa Angular ay hindi mababago) at idagdag ang Bearer token. Para gumana ito, mahalagang irehistro ang klase sa app.module.ts sa loob ng hanay ng mga provider, gamit ang key HTTP_INTERCEPTORS at pagmamarka sa patlang multi: true upang maiwasan ang pag-overwrite sa iba pang mga interceptor na maaaring umiiral.

Bukod sa pagdaragdag ng mga token, maaari nating gamitin ang kapangyarihan ng RxJS at ang operator na catchError para pangasiwaan ang mga nabigong tugon. Sa ganitong paraan, kung ang server ay magbabalik ng error, maaaring makuha ito ng interceptor at magpakita ng isang pasadyang mensahe o i-redirect ang user, na pinapanatiling hiwalay ang business logic mula sa paghawak ng error sa network.

Mga Android application na nagpapadala ng hindi naka-encrypt na data
Kaugnay na artikulo:
Nagpapadala ba ang iyong mga Android app ng hindi naka-encrypt na data? Isang komprehensibong gabay sa privacy, seguridad, at mga inirerekomendang app para protektahan ang iyong data.

Implementasyon sa Android gamit ang OkHttp at Retrofit

Kung tatakbo tayo sa pagbuo ng Android app, ang kombinasyon ng OKHttp at Retrofit Ito ang pamantayang ginto. Dito, ang proseso ay magkatulad ngunit may isang napaka-interesante na pagbabago: maaari nating gamitin mga isinapersonal na anotasyon bilang @InjectAuth para magdesisyon kung aling mga kahilingan ang nangangailangan ng token at alin ang dapat na pampubliko.

Ang daloy ay binubuo ng paglikha ng isang AuthInterceptor na sumusuri sa kahilingan. Kung matukoy nito na ang paraan ng API ay minarkahan ng ating anotasyon, awtomatikong ilalagay ng interceptor ang header ng pahintulot. Pinipigilan nito ang developer na kailangang idagdag ang token sa bawat kahulugan ng interface ng Retrofit, na lubos na nagpapabuti sa kakayahang sumukat ng proyekto at paglilinis ng code.

Paano i-activate ang VPN sa Android
Kaugnay na artikulo:
Paano i-activate ang VPN sa Android at harangan ang hindi ligtas na trapiko

Ang papel ng Axios sa JavaScript

Para sa mga gumagamit ng purong JavaScript o mga magaan na framework, Axios Nag-aalok ito ng napakalakas at madaling i-configure na functionality ng interceptor. Maaari nating tukuyin ang mga interceptor para sa pareho kahilingan bilang sagot.

Ang request interceptor ay tumatakbo bago ipadala ang kahilingan, kaya ito ang mainam na lugar para mag-inject ng Authorization: Bearer tokenSa kabilang banda, ang mga response interceptor ay nagbibigay-daan sa atin na iproseso ang datos bago ito makarating sa .then() o sa await, o kahit na magsagawa mga log ng pag-debug pagkalkula kung gaano katagal tumugon ang server sa pamamagitan ng paghahambing ng mga timestamp.

Seguridad sa backend gamit ang Spring Boot at JWT

Para maging makabuluhan ang lahat ng client-side deployment na ito, dapat alam ng server kung paano pamahalaan ang mga token na ito. Sa isang kapaligiran ng Spring bootKaraniwang ipinapatupad ang arkitektura JWT (JSON Web Token)Ang isang JWT token ay binubuo ng tatlong bahagi: ang header, ang payload (naglalaman ng data at mga pahintulot ng user), at ang digital signature upang maiwasan ang pakikialam.

Ang proseso ay nagsisimula sa pagpapatotoo, kung saan ipinapadala ng gumagamit ang kanilang mga kredensyal at ang server ay bubuo ng isang nilagdaang tokenKasunod nito, ipinapatupad ang isang authorization filter (tulad ng OncePerRequestFilterHinaharang ng filter na ito ang bawat papasok na tawag. Kinukuha nito ang token mula sa header. napatunayan gamit ang isang sikretong susi at, kung tama, nagtatatag ng authentication sa konteksto ng seguridad ng Spring upang payagan ang access sa resource.

Ano ang Browser-in-the-Middle at ano ang atake nito?
Kaugnay na artikulo:
Ano ang mga pag-atake ng Browser-in-the-Middle at kung paano protektahan ang iyong sarili?

Tinitiyak ng pagkakaroon ng matibay na sistema ng mga interceptor sa client at mga filter sa server na ligtas na komunikasyon at mahusay. Mula sa request cloning sa Angular hanggang sa mga anotasyon sa Retrofit o signature validation sa Spring Boot, ang layunin ay palaging pareho: i-automate ang seguridad upang ang programmer ay makapagtuon sa functionality at hindi sa pag-uulit ng mga nakakapagod na gawain sa imprastraktura. Ibahagi ang impormasyong ito upang mas maraming tao ang matuto tungkol sa paksa.


Idagdag bilang ginustong mapagkukunan