User management v microservice architekture

User management v microservice architekture
« kdy: 27. 10. 2019, 17:47:46 »
Ahojte,
mam taku otazku k navrhu microservis. Je podla Vas v poriadku mat "User management service" ako jednu microservisu? Mala by:
 - vratit uzivatela podla ID inej service
 - vytvorit (zaregistrovat) noveho uzivatela a zahashovat mu heslo
 - prihlasit existujuceho uzivatela a vratit jwt ktorym budu overovane nasledujuce requesty z FE na BE

Implementacia bude v spring boote. Urcite budem rad aj za odkaz na nejake resourcy ohladom user-managementu v microservisach, a nastudujem si to sam. Len zatial som nenasiel nic, co by mi pomohlo rozhodnut, ako by to malo byt spravne navrhnute. Tak sa pytam vas, ake su vase skusenosti z praxe, a ako by sa to malo podla vas navrhnut. Dakujem.



Džan

Re:User management v microservice architekture
« Odpověď #1 kdy: 29. 10. 2019, 09:50:44 »
Použil bych nějaký nástroj k tomu určený, třeba OpenLDAP.
Práva tam vyřešíš skupinama/org. jednotkama a navíc získáš skill-set pro enterprise appky, kde se kromě kromě OAuth (Google SAML atd.) nic dalšího neuchytilo.

Re:User management v microservice architekture
« Odpověď #2 kdy: 29. 10. 2019, 19:04:10 »
Idealne implementovat Identity Provider (IdP), ktory podporuje rozne SSO protokoly (OpenID Connect/SAML - hlavne pre legacy enterprise aplikacie, pozor OAuth je iba na autorizaciu, nie autentifikaciu). Dany IdP uz moze mat ulozenych pouzivatelov v podporovanom ulozisku (LDAP, Active Directory, databaza, ...). Taktiez teoreticky mozes svoj IdP "pripojit" k inemu IdP (napr. cez OpenID Connect s Google, LinkedIn, Facebook, ...). Vsetky aplikacie teda pouziju dany IdP na autentifikaciu a ziskaju identitu pouzivatele + access/id jwt token na dalsie komunikaciu, ktoru uz mozu dalsie aplikacie jednoducho overit. Moje odporucanie na IdP je Keycloak.

Vseobecne K8s doc - https://kubernetes.io/docs/reference/access-authn-authz/authentication/ ti poskytne ukazkovy prehlad niektorych moznosti.

Re:User management v microservice architekture
« Odpověď #3 kdy: 31. 10. 2019, 23:58:39 »
Dakujem pozriem na to ... ale ak sa nemylim tak odporucania vychadzaju z pouzitia nejakych externych sluzieb?

Potreboval by som skor nieco, co bude bezat ako nejaka dalsia autentifikacna/autorizacna microservica, takze request smerujuci na gateway, overi oauth token touto ms, a naslednu prepusti request dalej na pozadovanu ms. Ak token v headeri nebude, alebo bude neplatny, tak request skonci na 401/403, a v appke presmerujem uzivatela na login page, kde sa prihlasi, a nasledne request na ziskanie tokenu pojde cez gateway na tu moju auth sluzbu.

Je toto chovanie ktore som popisal zle? Mozno som len velmi konzervativny, ale radsej by som mal autorizaciu a autentifikaciu uzivatelov ako spring boot sluzbu. Dakujem.

Re:User management v microservice architekture
« Odpověď #4 kdy: 01. 11. 2019, 06:44:02 »


ldj

Re:User management v microservice architekture
« Odpověď #5 kdy: 01. 11. 2019, 07:27:11 »
AWS IAM https://aws.amazon.com/iam/
Radeji bych se vyhybal resenim se silnym vendor lock-in na cloud. Prijde mi tu celkem rozumne podivat se po open-source resenich jako je  keycloak. Nejake hinty k pouziti s mikrosluzbama jsou treba tu: https://medium.com/@imyom25/microservices-and-security-part-2-f2b44eb98a21

rovnou bych se i podival na service mesh(istio, linkerd), a aplikaci vyvijel uz pripravene pro jejich adopci. Tim si usnadnim spravu infrastruktury v budoucnu a rovnou ziskam transaction monitoring, rozumny management certifikatu, routovani a service discovery atp.