[keycloak-dev] PR for adding 'roles' and 'web-origins' client scopes
Marek Posolda
mposolda at redhat.com
Tue Oct 2 15:25:34 EDT 2018
I've sent PR https://github.com/keycloak/keycloak/pull/5602 . Summary of
changes:
- The roles and allowed-origins are not added automatically to the
access tokens now. Instead of it, the PR introduces 2 default client
scopes: 'roles' and 'web-origins' which adds them
- Client scope 'web-origins' adds allowed-origins to the access token
similarly like it was before. So the only advantage is, that it is
possible to remove clientScope/protocolMapper if you don't need web
origins in the token
- Client scope 'roles' contains protocol mappers for add roles to the
access tokens. By default, they are added to the claims "realm_access"
and "resource_access" exactly as it was before. However it is easier to
move to completely different claims. The PR doesn't introduce new
protocol mapper implementation for roles, but uses the existing
implementations UserRealmRoleMappingMapper and
UserClientRoleMappingMapper. As a side-effect, it fixes some bug in
those mappers claimed by many community users -
https://issues.jboss.org/browse/KEYCLOAK-5259
- PR introduces new protocol mapper implementation
AudienceResolveProtocolMapper, which adds audience of all the clients,
for which at least one client role is available in the token. This is
added by default to the 'roles' client scope
- There is new switch "Include in Token Scope" on the Client Scope. It
is applicable only for OIDC clients. When it is off, the client scope is
not added to the "scope" in the access token. It is used for both
'roles' and 'web-origins' scopes, so those are not in the token by
default now.
- There is some minor addition to ProtocolMapper SPI. Protocol mapper
implementations has "priority" now. This is needed, so that it is
ensured that for example we first "compute" the roles to be put in the
token (including composite roles etc), then eventually add/move some
roles through HardcodedRoleMapper or RoleNameMapper, then figure the
audiences and finally move the roles to proper place in the token (which
is not necessarily hardcoded to "realm_access" and "resource_access"
claims as it was before).
- Migration is handled, so that 'roles' and 'web-origins' scopes are
automatically added during migration and they are added to all the OIDC
confidential/public clients.
WDYT?
Marek
More information about the keycloak-dev
mailing list