> Even when one might assuming a single page application with a
> public
> client the browser, where the browser sends the request to
> Keycloak,
> it is not so much of a difference to the user:
>
> They would need to hand the username and the password to an
> application that is running in the browser, that they should
> actually
> not really trust with their password. The user can't really tell
> what
> the application is doing with that username and password. The
> only
> place they should trust to put in the username and password
> would be
> the official login page of your Keycloak instance.
True, I suppose a user would trust the login application served by
the
keycloak service a bit more than the application requiring the
token.
However, in this case I'm actually _not_ thinking of a scenario
involving a web site at all.
At work we offer a web API to customers that they need a token to
access. In the past we've handed out client credentials to them so
they
can use that flow to get a token.
We've recently switched to Keycloak and I've been thinking about
changing this. From what I understand there's really only one
drawback
to asking our customers to ROPC against a public client for
machine2machine access
- they need to provide us with a dedicated email address.
At the same time there are several advantages
- we can't see their password (we can see client credentials)
- we've enabled password reset by users, so they can change their
password (client credentials need to be reset by us)
- finally an advantage that's purely for us: we don't need to
manage
100s of client credentials on top of the 1000s of users
Yes, we probably should do some sort of API keys instead, but
Keycloak
doesn't seem to offer that so we'd like to make that improvement
later,
if possible.
/M
"I am so amazingly cool you could keep a side of meat in me for a
month. I am so hip I have difficulty seeing over my pelvis."
— Zaphod being cool.