Identity provider pre Spring Boot mikrosluzby

Identity provider pre Spring Boot mikrosluzby
« kdy: 26. 10. 2020, 22:07:50 »
Ahojte, zacinam novy projekt postaveny na mikrosluzbach, a potrebujem vyriesit autorizaciu a autentifikaciu. Spring Boot Oaut2 Authorization server uz je len v udrziavacej faze, a novy projekt od springu este v plienkach. Resource servery budu vsetko spring boot appk, a client bude vo Vue. Uzivatelia by sa mali vediet autentifikovat na zaklade heslo, ale aj google uctu. Overovanie uzivatelov by som chcel cez jwt.

Co som tak pozeral, dost sa poslednu ako nahrada propaguje Keycloack, mate s nim skusenosti? Odporucate Keycloack alebo radsej nieco ine? Dakujem.


Re:Identity provider pre Spring Boot mikrosluzby
« Odpověď #1 kdy: 27. 10. 2020, 14:28:01 »
Díval jsi se na Firebase Authentication?
Používáme ho v Trisbee také na Spring Boot. Dopsali jsme si jen ověřování tokenů na BE, takový whitelist, ale není třeba :)

luvar

  • ***
  • 133
    • Zobrazit profil
    • E-mail
Re:Identity provider pre Spring Boot mikrosluzby
« Odpověď #2 kdy: 27. 10. 2020, 22:34:53 »
Je aj moznost riesit si to "rucne"? Teda, ze jwt tokeny vydava priamo apka? Ak ano, tak napriklad tento (a dalsie tutorialy od daneho cloveka) boli jedny z tch lepsich: https://www.callicoder.com/spring-boot-security-oauth2-social-login-part-1/

Re:Identity provider pre Spring Boot mikrosluzby
« Odpověď #3 kdy: 27. 10. 2020, 23:09:53 »
Díval jsi se na Firebase Authentication?
Používáme ho v Trisbee také na Spring Boot. Dopsali jsme si jen ověřování tokenů na BE, takový whitelist, ale není třeba :)

Preferoval by som riesenie ktore by fungovalo lokalne, a mal som to viac "pod kontrolou" ale pozriem, dakujem


Re:Identity provider pre Spring Boot mikrosluzby
« Odpověď #4 kdy: 27. 10. 2020, 23:24:43 »
Je aj moznost riesit si to "rucne"? Teda, ze jwt tokeny vydava priamo apka? Ak ano, tak napriklad tento (a dalsie tutorialy od daneho cloveka) boli jedny z tch lepsich: https://www.callicoder.com/spring-boot-security-oauth2-social-login-part-1/

Urcite je v hre aj takato moznost. Vygenerovat a zvalidovat token asi problem nebude, skor sa obavam ze bude komplikovanejsie vyuzit springovu security pre resource servery, ktore vedia automaticky komunikovat s auth serverom


luvar

  • ***
  • 133
    • Zobrazit profil
    • E-mail
Re:Identity provider pre Spring Boot mikrosluzby
« Odpověď #5 kdy: 27. 10. 2020, 23:37:17 »
Je aj moznost riesit si to "rucne"? Teda, ze jwt tokeny vydava priamo apka? Ak ano, tak napriklad tento (a dalsie tutorialy od daneho cloveka) boli jedny z tch lepsich: https://www.callicoder.com/spring-boot-security-oauth2-social-login-part-1/

Urcite je v hre aj takato moznost. Vygenerovat a zvalidovat token asi problem nebude, skor sa obavam ze bude komplikovanejsie vyuzit springovu security pre resource servery, ktore vedia automaticky komunikovat s auth serverom

Neviem, co presne je resource server, ale ak je to spring aplikacia vyuzivajuca napriklad spring data rest, alebo hateoas a robiaca crud operacie nad databazou cz nejake rest api, tak tam problem nie je... Staci sa zavesit na spravne miesto. Viď napríklad https://youtu.be/AdsnM6OTepc (myslím, že toto video to pekne vysvetlovalo)

Re:Identity provider pre Spring Boot mikrosluzby
« Odpověď #6 kdy: 28. 10. 2020, 03:43:19 »
Je aj moznost riesit si to "rucne"? Teda, ze jwt tokeny vydava priamo apka? Ak ano, tak napriklad tento (a dalsie tutorialy od daneho cloveka) boli jedny z tch lepsich: https://www.callicoder.com/spring-boot-security-oauth2-social-login-part-1/

Urcite je v hre aj takato moznost. Vygenerovat a zvalidovat token asi problem nebude, skor sa obavam ze bude komplikovanejsie vyuzit springovu security pre resource servery, ktore vedia automaticky komunikovat s auth serverom

Neviem, co presne je resource server, ale ak je to spring aplikacia vyuzivajuca napriklad spring data rest, alebo hateoas a robiaca crud operacie nad databazou cz nejake rest api, tak tam problem nie je... Staci sa zavesit na spravne miesto. Viď napríklad https://youtu.be/AdsnM6OTepc (myslím, že toto video to pekne vysvetlovalo)

Ano nejaka spring appka so zabezpecenym restovim API. To co by som potreboval dosiahnut je, ze login page bude spravena priamo vo Vue appke, a prihlasovanie ci uz do google alebo mojho system bude RESTom, a ako odpoved jwt access a refresh token.

Nasledne by som sa ziskanym access tokenom mal vediet autorizovat v mikrosluzbach na BE. Co som dalej hladal a zistil je, ze best practise je token overovat voci autorizacnej sluzbe, co by mal byt napr keycloack alebo moja appka.

U rieseni ako Keycloack sa mi nepaci ze vystavuju vlastny login formular. Malo by to byt vsetko restom, pretoze do buducna je vysoky predpoklad ze pribudne mobilna appka.

cjohn

Re:Identity provider pre Spring Boot mikrosluzby
« Odpověď #7 kdy: 28. 10. 2020, 06:00:48 »
Keycloak je asi najpouzivanejsi open source IdP, plne kompatibilny s Open ID Connect (OIDC), SAML.

Ak sa ti nepaci ze vystavuje vlastny login formular, tak velmi nechapes OIDC (odporucam na zaciatok https://developer.okta.com/docs/concepts/oauth-openid/). V kazdom pripade OIDC ponuka aj direct grant code flow (alebo resource owner password flow) s ktorym mozes robit pouzit app login form, ale z hladiska bezpecnosti nie je idealny.

V kazdom pripade mas vela moznosti na vyber: https://openid.net/developers/certified/

Re:Identity provider pre Spring Boot mikrosluzby
« Odpověď #8 kdy: 28. 10. 2020, 11:09:22 »
Keycloak je asi najpouzivanejsi open source IdP, plne kompatibilny s Open ID Connect (OIDC), SAML.

Ak sa ti nepaci ze vystavuje vlastny login formular, tak velmi nechapes OIDC (odporucam na zaciatok https://developer.okta.com/docs/concepts/oauth-openid/). V kazdom pripade OIDC ponuka aj direct grant code flow (alebo resource owner password flow) s ktorym mozes robit pouzit app login form, ale z hladiska bezpecnosti nie je idealny.

V kazdom pripade mas vela moznosti na vyber: https://openid.net/developers/certified/

Ide o to, ze na styl bude pouzita Vue libka s komponentami, a chceme formular nastylovat danou libkou nech zapada do celeho konceptu. Preto chceme login a registraciu riesit vo Vue a nepozdava sa mi ze sa to musi stylovat na 2 miestach 2 sposobmi.

Uznavam ze to neni asi uplne OIDC pristup, ale autentifikaciu budeme vyuzivat len u nas, a ziadne tretie sluzby ktore by potrebovali formulare mat u nas.

cjohn

Re:Identity provider pre Spring Boot mikrosluzby
« Odpověď #9 kdy: 28. 10. 2020, 13:27:24 »
Uznavam ze to neni asi uplne OIDC pristup, ale autentifikaciu budeme vyuzivat len u nas, a ziadne tretie sluzby ktore by potrebovali formulare mat u nas.

To uplne chapem ze dev chce vyhajpovat svoju SPA apku, ale pozrime sa z pohladu security napr. na poziadavku prihlasovania s google kontom:
dali by ste svoje google prihlasovacie udaje vyhajpovanej (Vue+Vuetify) SPA a budete jej verit, ze si ich nikde neulozi/neodosle, ale iba pouzije na direct grant code flow?

Ironicky: Ak ano ozvite sa mi, poslem vam primitivny Vuetify codepen.io pen, kde mi vase Google hesla mozte zadat
Seriozne: Samozrejme, ze nezadate

Bojujem dennodenne s takymito poziadavkami od SPA devs. Seriozny pristup by bol implementovat registraciu ako dalsiu SPA appku, ktora to posle backendu a ten cez IdP admin API (Keycloak REST admin API) zaregistruje pouzivatela + IdP tema sa customizuje. A vsetky SPA apky pojdu cez Authorization Code with PKCE. Vo vysledku je jeden centralny IdP, kde sa da vsetko nastavit ako: password policy, OTP policy, IdP brokering (MojeId, Google, GitHub, LinkedIn, ....), user federation (LDAP, Kerberos), .... Pre malu apku to moze byt overkill na zaciatok, ale zjednodusi to autentifikaciu pre vsetky aplikacie s podporou OIDC (nielen SPA). Tiez to nie je vendor lock-in. Teraz moze byt Keycloak, v buducnoti iny OIDC IdP.





Re:Identity provider pre Spring Boot mikrosluzby
« Odpověď #10 kdy: 28. 10. 2020, 15:42:37 »
Uznavam ze to neni asi uplne OIDC pristup, ale autentifikaciu budeme vyuzivat len u nas, a ziadne tretie sluzby ktore by potrebovali formulare mat u nas.

To uplne chapem ze dev chce vyhajpovat svoju SPA apku, ale pozrime sa z pohladu security napr. na poziadavku prihlasovania s google kontom:
dali by ste svoje google prihlasovacie udaje vyhajpovanej (Vue+Vuetify) SPA a budete jej verit, ze si ich nikde neulozi/neodosle, ale iba pouzije na direct grant code flow?

Ironicky: Ak ano ozvite sa mi, poslem vam primitivny Vuetify codepen.io pen, kde mi vase Google hesla mozte zadat
Seriozne: Samozrejme, ze nezadate

Bojujem dennodenne s takymito poziadavkami od SPA devs. Seriozny pristup by bol implementovat registraciu ako dalsiu SPA appku, ktora to posle backendu a ten cez IdP admin API (Keycloak REST admin API) zaregistruje pouzivatela + IdP tema sa customizuje. A vsetky SPA apky pojdu cez Authorization Code with PKCE. Vo vysledku je jeden centralny IdP, kde sa da vsetko nastavit ako: password policy, OTP policy, IdP brokering (MojeId, Google, GitHub, LinkedIn, ....), user federation (LDAP, Kerberos), .... Pre malu apku to moze byt overkill na zaciatok, ale zjednodusi to autentifikaciu pre vsetky aplikacie s podporou OIDC (nielen SPA). Tiez to nie je vendor lock-in. Teraz moze byt Keycloak, v buducnoti iny OIDC IdP.

Pouzivali ste aj niekedy UI libky z vue na prisposobenie login stranky keycloaku? Pretoze aj keby som sa rozhodol pre KC, design appky by nemal byt naruseny. Momentalne robime SPA pomocou Vuetify.

cjohn

Re:Identity provider pre Spring Boot mikrosluzby
« Odpověď #11 kdy: 28. 10. 2020, 19:47:06 »
Specificky Vuetify Keycloak temu som nevidel, zato Material Keycloak design existuje https://github.com/MAXIMUS-DeltaWare/material-keycloak-theme .