OpenID Connect: whakamanatanga o nga tono o roto mai i te ritenga ki te paerewa

I etahi marama kua pahure ake nei kei te whakatinana ahau i tetahi tūmau OpenID Connect hei whakahaere urunga mo nga rau o a maatau tono o roto. Mai i o maatau ake whanaketanga, he watea i runga i te tauine iti ake, ka neke matou ki tetahi paerewa e whakaaetia ana. Ko te urunga mai i tetahi ratonga pokapū ka tino whakangwarihia nga mahi ngawari, ka whakaheke i te utu mo te whakatinana i nga whakamanatanga, ka taea e koe te kimi i nga otinga kua rite, kia kaua e pakaru to roro i te wa e whakawhanake ana i nga mea hou. I roto i tenei tuhinga ka korero ahau mo tenei whakawhitinga me nga pupuhi i taea e matou te patu.

OpenID Connect: whakamanatanga o nga tono o roto mai i te ritenga ki te paerewa

He wa roa i mua... I timata katoa

He maha nga tau ki muri, i te nui rawa o nga tono o roto ki te whakahaere a-ringa, ka tuhia e matou he tono hei whakahaere i te uru ki roto i te kamupene. He tono Rails ngawari e hono ana ki te papaunga raraunga me nga korero mo nga kaimahi, i whirihorahia te uru ki nga momo mahi. I te wa ano, i whakarewahia e matou te SSO tuatahi, i ahu mai i runga i te manatoko o nga tohu i runga i te taha o te kaihoko me te kaituku whakamana; i tukuna te tohu i roto i te puka whakamunatia me te maha o nga tawhā me te manatoko i runga i te tūmau whakamana. Ehara tenei i te huarahi tino watea, na te mea me whakaahua e ia tono a-roto tetahi paparanga arorau nui, a ko nga papaunga raraunga kaimahi i tino tukutahia ki te tūmau whakamana.

I muri i etahi wa, ka whakatau matou ki te whakangawari i te mahi o te whakamanatanga matua. I whakawhitia a SSO ki te taurite. Ma te awhina o OpenResty, i taapirihia he tauira ki a Lua hei tirotiro i nga tohu, e mohio ana ko tehea tono e haere ana te tono, ka taea te tirotiro mena he uru ki reira. Na tenei huarahi i tino whakangwari ake te mahi ki te whakahaere urunga ki nga tono o roto - kua kore he take ki te whakaahua i etahi atu arorau i roto i te waehere o ia tono. Ko te mutunga mai, i katia e matou nga waka o waho, engari ko te tono tonu kaore he mohio mo te whakamanatanga.

Heoi ano, kotahi tonu te raruraru kaore i oti. Me pehea nga tono e hiahia ana ki nga korero a nga kaimahi? I taea te tuhi i tetahi API mo te ratonga whakamana, engari me taapiri atu e koe etahi atu arorau mo ia tono pera. I tua atu, i hiahia matou ki te whakakore i te ti'aturi ki tetahi o a matou tono tuhi-whaiaro, e aro atu ana ki te whakamaoritanga ki OpenSource, i runga i ta matou tūmau whakamanatanga o roto. Ka korerotia e matou ki a koe mo etahi atu wa. Ko te otinga o nga raru e rua ko OAuth.

Ki nga paerewa e whakaaetia ana

Ko te OAuth he paerewa whakamanatanga marama, e whakaaetia ana, engari i te mea kaore i te rawaka ana mahi anake, i whakaarohia tonutia a OpenID Connect (OIDC). Ko OIDC ake ko te tuatoru o nga whakatinanatanga o te paerewa whakamotuhēhēnga tuwhera, kua huri ki te huinga o te kawa OAuth 2.0 (Open Authorization Protocol). Ko tenei otinga ka whakaoti i te raruraru o te kore o nga raraunga mo te kaiwhakamahi mutunga, ka taea hoki te whakarereke i te kaiwhakarato whakamana.

Heoi, kaore matou i whiriwhiri i tetahi kaiwhakarato motuhake me te whakatau ki te taapiri i te whakaurunga ki te OIDC mo ta matou tūmau whakamanatanga. I tautokohia tenei whakatau e te mea he tino ngawari te OIDC i runga i te whakaaetanga a te kaiwhakamahi mutunga. No reira, i taea te whakatinana i te tautoko OIDC i runga i to tūmau whakamanatanga o naianei.

OpenID Connect: whakamanatanga o nga tono o roto mai i te ritenga ki te paerewa

To tatou ara ki te whakatinana i to tatou ake tūmau OIDC

1) Kawea mai nga raraunga ki te ahua e hiahiatia ana

Hei whakauru i te OIDC, he mea tika ki te kawe mai i nga raraunga kaiwhakamahi o naianei ki te ahua e marama ana ki te paerewa. I roto i te OIDC ka kiia tenei ko nga Kereme. Ko nga waitohu ko nga waahi whakamutunga i roto i te paataka kaiwhakamahi (ingoa, imeera, waea, me etahi atu). Kei te noho rarangi paerewa o nga tohu, me nga mea katoa kaore i whakauruhia ki tenei rarangi ka kiia he tikanga. No reira, ko te mea tuatahi me aro koe ki te hiahia koe ki te kowhiri i tetahi kaiwhakarato OIDC o naianei ko te kaha ki te whakarite i nga pane kuini hou.

Ko te roopu o nga tohu kua honoa ki roto i te waahanga e whai ake nei - Te Awhi. I te wa e whakamanahia ana, ka tonohia te urunga kia kaua ki nga tohu motuhake, engari ki nga waahanga, ahakoa kaore e hiahiatia etahi o nga tohu mai i te waahanga.

2) I whakatinanahia nga putea e tika ana

Ko te waahanga o muri mai o te whakauru OIDC ko te whiriwhiri me te whakatinanatanga o nga momo whakamanatanga, e kiia nei ko nga karaati. Ko te ahuatanga o te taunekeneke i waenga i te tono kua tohua me te tūmau whakamana ka whakawhirinaki ki te tahua kua tohua. He kaupapa tata mo te kowhiri i te putea tika e whakaatuhia ana i te ahua i raro nei.

OpenID Connect: whakamanatanga o nga tono o roto mai i te ritenga ki te paerewa

Mo ta matou tono tuatahi, i whakamahia e matou te putea tino noa - Waehere Whakamana. Ko tana rereke mai i etahi atu ko te toru-taahiraa, i.e. ka tukuna he whakamatautau taapiri. Tuatahi, ka tono te kaiwhakamahi mo te whakaaetanga whakamanatanga, ka whakawhiwhia he tohu Waehere Whakamana, katahi me tenei tohu, me te mea he tikiti haerenga, ka tono tohu uru. Ko nga taunekeneke matua katoa o tenei ahuatanga whakamana e ahu mai ana i runga i nga huringa i waenga i te tono me te tūmau whakamana. Ka taea e koe te panui atu mo tenei putea konei.

E piri ana a OAuth ki te ariā ko nga tohu whakauru ka whakawhiwhia i muri i te whakamanatanga me noho mo te wa poto, me te pai ake kia huri i te toharite ia 10 meneti. Ko te karaati Waehere Whakamanatanga he manatoko e toru nga waahanga ma te hurihanga; ki te mahi pera i ia 10 meneti, me te pono, ehara i te mea tino pai ki te kanohi. Hei whakatau i tenei raru, he putea ano - Refresh Token, i whakamahia ano e matou. He ngawari ake nga mea katoa i konei. I te wa e whakamanahia ana mai i tetahi atu karaati, i tua atu i te tohu urunga matua, ka tukuna ano tetahi - Refresh Token, ka taea te whakamahi kotahi anake me tona oranga, hei tikanga, he roa ake. Ma tenei Tohu Whakahou, ka mutu te TTL (Wā ki te Ora) o te tohu urunga matua, ka tae mai he tono mo te tohu uru hou ki te mutunga o tetahi atu karaati. Ko te Tohu Whakahou i whakamahia ka tautuhi tonu ki te kore. Ko tenei haki he rua-taahiraa, ka taea te mahi i muri, kaore e kitea e te kaiwhakamahi.

3) Kua whirihorahia nga whakatakotoranga putanga raraunga kaiwhakamahi

Kia whakatinanahia nga tahua kua tohua, ka mahi te whakamanatanga, he mea tika kia whakahuahia te whiwhinga o nga raraunga kaiwhakamahi mutunga. He waahi motuhake to OIDC mo tenei, ka taea e koe te tono raraunga kaiwhakamahi me to tohu urunga o naianei me te mea he mea hou. A, ki te kore e rereke nga raraunga kaiwhakamahi, engari me haere koe mo nga mea o naianei he maha nga wa, ka taea e koe te haere mai ki tetahi otinga penei i nga tohu JWT. Ko enei tohu ka tautokohia e te paerewa. Ko te tohu JWT ake e toru nga waahanga: pane (nga korero mo te tohu), te utu (tetahi raraunga e tika ana) me te hainatanga (te hainatanga, ka hainatia te tohu e te kaimau me te wa kei te heke mai ka taea e koe te tirotiro i te puna o tana hainatanga).

I roto i te whakatinanatanga OIDC, ko te tohu JWT ka kiia ko id_token. Ka taea te tono me te tohu urunga auau me te toenga ko te manatoko i te hainatanga. Mo tenei kaupapa, he pito mutunga motuhake to te tūmau whakamana me te maha o nga taviri tūmatanui kei te whakatakotoranga J.W.K.. A ko te korero mo tenei, he mea tika kia whakahuahia he waahi ano tera, kei runga i te paerewa RFC5785 e whakaatu ana i te whirihoranga o naianei o te tūmau OIDC. Kei roto i nga wahitau mutunga katoa (tae atu ki te wahitau o te mowhiti matua a te iwi e whakamahia ana mo te hainatanga), nga pane kuini me nga whaanui e tautokohia ana, nga huringa whakamunatanga, nga putea tautoko, me era atu.

Hei tauira i runga i a Google:

{
 "issuer": "https://accounts.google.com",
 "authorization_endpoint": "https://accounts.google.com/o/oauth2/v2/auth",
 "device_authorization_endpoint": "https://oauth2.googleapis.com/device/code",
 "token_endpoint": "https://oauth2.googleapis.com/token",
 "userinfo_endpoint": "https://openidconnect.googleapis.com/v1/userinfo",
 "revocation_endpoint": "https://oauth2.googleapis.com/revoke",
 "jwks_uri": "https://www.googleapis.com/oauth2/v3/certs",
 "response_types_supported": [
  "code",
  "token",
  "id_token",
  "code token",
  "code id_token",
  "token id_token",
  "code token id_token",
  "none"
 ],
 "subject_types_supported": [
  "public"
 ],
 "id_token_signing_alg_values_supported": [
  "RS256"
 ],
 "scopes_supported": [
  "openid",
  "email",
  "profile"
 ],
 "token_endpoint_auth_methods_supported": [
  "client_secret_post",
  "client_secret_basic"
 ],
 "claims_supported": [
  "aud",
  "email",
  "email_verified",
  "exp",
  "family_name",
  "given_name",
  "iat",
  "iss",
  "locale",
  "name",
  "picture",
  "sub"
 ],
 "code_challenge_methods_supported": [
  "plain",
  "S256"
 ],
 "grant_types_supported": [
  "authorization_code",
  "refresh_token",
  "urn:ietf:params:oauth:grant-type:device_code",
  "urn:ietf:params:oauth:grant-type:jwt-bearer"
 ]
}

Na, ma te whakamahi i te id_token, ka taea e koe te whakawhiti i nga tohu katoa e tika ana ki te utu tohu me te kore e whakapa atu ki te kaimau whakamana i nga wa katoa ki te tono raraunga kaiwhakamahi. Ko te kino o tenei huarahi ko nga huringa o nga raraunga kaiwhakamahi mai i te tūmau kaore e tae wawe mai, engari me te tohu uru hou.

Nga hua whakatinana

Na, i muri i te whakatinana i ta maatau ake OIDC tūmau me te whakarite hononga ki a ia i te taha tono, i whakatauhia e matou te raruraru o te tuku korero kaiwhakamahi.
I te mea he paerewa tuwhera te OIDC, kei a maatau te whiringa ki te whiriwhiri i tetahi kaiwhakarato o naianei, i te whakatinanatanga tūmau ranei. I whakamatauria e matou a Keycloak, he tino ngawari ki te whirihora; i muri i te whakarite me te whakarereke i nga hononga hononga ki te taha tono, kua rite ki te haere. I te taha tono, ko nga mea katoa e toe ana ko te whakarereke i nga whirihoranga hononga.

Te korero mo nga otinga o naianei

I roto i ta matou whakahaere, hei tuumau OIDC tuatahi, i kohia e matou ta matou ake whakatinanatanga, i taapirihia ina tika ana. Whai muri i te tirotiro taipitopito o etahi atu otinga kua rite, ka taea e taatau te kii he kaupapa tautohetohe tenei. Ko te whakatau ki te whakatinana i ta maatau ake tūmau i peia e nga awangawanga a nga kaiwhakarato mo te kore o nga mahi e tika ana, tae atu ki te aroaro o tetahi punaha tawhito kei roto i nga momo mana motuhake mo etahi ratonga me te rongoa i te maha o nga raraunga mo nga kaimahi. . Heoi, i roto i nga whakatinanatanga kua rite, he waatea mo te whakauru. Hei tauira, kei a Keycloak tana ake punaha whakahaere kaiwhakamahi me nga raraunga kei te rongoa tika ki roto, a, ko te neke i o kaiwhakamahi ki reira kaore e uaua. Mo tenei kaupapa, kei a Keycloak tetahi API ka taea e koe te whakatutuki katoa i nga mahi whakawhiti e tika ana.

Ko tetahi atu tauira o te tohu tohu, whakamere, ki taku whakaaro, ko te whakatinanatanga ko Ory Hydra. He mea whakamere na te mea he rereke nga waahanga kei roto. Hei whakauru, me hono koe i to ratonga whakahaere kaiwhakamahi ki ta raatau ratonga whakamana me te whakawhānui i te wa e hiahiatia ana.

Ehara ko Keycloak me Ory Hydra anake nga rongoa kua rite. He pai ake te kowhiri i tetahi whakatinanatanga kua whakamanahia e te OpenID Foundation. Ko enei otinga he tohu Tiwhikete OpenID.

OpenID Connect: whakamanatanga o nga tono o roto mai i te ritenga ki te paerewa

Kaua hoki e wareware ki nga kaiwhakarato utu o mua mena kare koe e pirangi ki te pupuri i to tūmau OIDC. I tenei ra he maha nga whiringa pai.

He aha te muri

I nga wa e heke mai nei, ka kati taatau waka ki nga ratonga o roto i tetahi huarahi rereke. Kei te whakamahere matou ki te heke i to matou SSO o naianei i runga i te taurite ma te whakamahi i te OpenResty ki te takawaenga i runga i te OAuth. He maha ano nga otinga kua rite i konei, hei tauira:
github.com/bitly/oauth2_proxy
github.com/ory/oathkeeper
github.com/keycloak/keycloak-gatekeeper

Ētahi atu rauemi

jwt.io - ratonga pai mo te tirotiro i nga tohu JWT
openid.net/developers/certified — rarangi o nga whakatinanatanga OIDC whaimana

Source: will.com

Tāpiri i te kōrero