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.
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.
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
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.
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
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
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.
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:
Ētahi atu rauemi
Source: will.com