Hi Simon,
Seems like you've hit a bug. I was able to reproduce it, please let me know if the use
case is similar to yours:
1. created an OIDC client;
2. created some client roles for that client;
3. assigned them to the user;
4. added two protocol mappers, User Client Role and User Realm Role;
5. obtained access token for the user via direct grant;
6. used the token to query Keycloak userinfo endpoint.
If Full scope is enabled in client settings -> Scope, I can see all the roles in the
returned userinfo.
If Full scope is disabled, there is no way to add roles from step 2 to the scope. In the
scope config, they show up in Effective roles, but neither in Assigned roles nor Available
roles.
I think this is because in the latter mode userinfo returns only direct roles, not
effective ones. It's easy to proof; you can add, say, "admin" realm role to
the scope, but the userinfo won't include it's child role,
"create-realm", even if the user is admin.
OTOH, you have added protocol mappers to the client, right? You can go to mapper settings
and turn off "Add to access token" (leaving Full scope on). Thus, your access
token won't include role info anymore, but it will remain in the ID token and userinfo
endpoint response.
As the last resort, you can use Keycloak Admin REST API [1] to query for user roles.
[1]
https://www.keycloak.org/docs-api/4.5/rest-api/index.html#_users_resource
Cheers,
Dmitry Telegin
CTO, Acutus s.r.o.
Keycloak Consulting and Training
Pod lipami street 339/52, 130 00 Prague 3, Czech Republic
+42 (022) 888-30-71
E-mail: info(a)acutus.pro
On Fri, 2018-10-12 at 11:58 +0100, Simon Payne wrote:
Hi,
We have an existing system which we would like to integrate with keycloak.
This system has a legacy authorization model, which is fairly complex and
fine grained.
Users of this system have many hundreds of roles which in some cases
results in the token being too large, breaking the header size.
I was hoping that by limiting the roles within the token, through scope,
and an endpoint similar to user-info or token introspection, we could
determine which roles or resources the user is allowed to access through
validated identity.
however, i found that by limiting the scope for the access token, the roles
are not returned as part of the user-info response.
is anyone aware of any alternatives which will allow me to test roles
associated with the user , at the resource server, without them being
present in the access token?
thanks
Simon.
_______________________________________________
keycloak-user mailing list
keycloak-user(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/keycloak-user