--
You received this message because you are subscribed to the Google Groups "microservices" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microservice...@googlegroups.com.
To post to this group, send email to micros...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microservices/34d2d3e0-6754-4f15-bfcc-4194804f872c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To view this discussion on the web visit https://groups.google.com/d/msgid/microservices/8b9f6e19-d0bf-473f-9117-88758250df6b%40googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "microservices" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microservices/n_jL3atxPhQ/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microservice...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microservices/b2863bea-db6f-4d99-8fdb-52950dc3b221%40googlegroups.com.
Hi John and Carsten. We looked at Keycloak and were concerned about the administrative overhead -- it seemed as if every application would need to be declared/defined/maintained within Keycloak. If we need a new role in an app we would have to go into Keycloak and add the role there and associate it with the application so that tokens for that application can potentially have that role in them. Is this correct based on your experience, and assuming so, what is your impression of any administrative burden so far?
We liked the idea of using signed OAuth 2 tokens, but we didn't want the administrative overhead that we perceived in Keycloak; we didn't want to have to define "applications" because we anticipate the boundaries of applications changing over time as we add functionality and integrate with more services. So the UI responds to an HTTP 403 service response by looking for the attributes error="insufficient_scope" and scope="<the-required-scope>" and then goes back to the token endpoint to get a new token with an expanded scope. This way an application doesn't have to know what roles it will need; it can just discover them over time based on HTTP 403 responses. An application may want to customize the view based on whether the user is authorized for a particular role; in that case the application always performs a union of the scope a service says is required in its HTTP 403 response and a hard-coded list of roles that the UI wants to use to make view decisions; that way the UI will always have a token with at least the roles in the hard-coded list that the user is authorized for; the UI can then accurately make its view enable/disable decisions while still being able to dynamically expand scope.
Our token endpoint has access to our pre-existing role/assignment database so it can decide what to do when it recieves a request to expand scope.
I think you are using Keycloak as your book-of-record role repository/assignment database. That would be a different use case than our situation -- we have a separate system for that already, and using Keycloak would force us to duplicate work that we are already doing.
Ron
--
You received this message because you are subscribed to a topic in the Google Groups "microservices" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microservices/n_jL3atxPhQ/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microservice...@googlegroups.com.
To post to this group, send email to micros...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microservices/194fbbe0-ba86-4460-a001-65a00e295aeb%40googlegroups.com.
- implementing AC within a microservice would complicate it and break one of its core ideas - to do just one thing. It finally will do two things: authorize access (which is not a trivial task) and actually do what its meant for
- while one can gracefully abstract the AC-code into a dependency (a plugin if you, say, use senecajs), updating this dependency would require microservice code rebuild; and if we have a dozen of microservices with AC on top - we'll have to rebuild them all. This breaks another core idea - the ease of deployment
- in some cases you could reuse your microservice in another project, AC-dependency will make it more complicated
- if you practice distributing development to teams - a new team would have to study the AC mechanic (depending on how gracefully you abstracted the AC-code) while developing a new microservice
--
You received this message because you are subscribed to a topic in the Google Groups "microservices" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microservices/n_jL3atxPhQ/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microservice...@googlegroups.com.
To post to this group, send email to micros...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microservices/8d767d8f-416e-4369-ac7f-621ae40d7478%40googlegroups.com.