Comments (7)
Changing it to this makes it compile again:
return new KeycloakAuthRequestPostProcessor(Optional.of(new SimpleAuthorityMapper()))
.authorities("user", role)
.accessToken(accessToken -> {
accessToken.setPreferredUsername(email);
accessToken.setSubject(authServerUserId);
accessToken.setGivenName(givenName);
accessToken.setFamilyName(familyName);
})
.idToken(idToken -> {
idToken.setPreferredUsername(email);
idToken.setSubject(authServerUserId);
idToken.setGivenName(givenName);
idToken.setFamilyName(familyName);
});
But now my @AuthenticationPrincipal
is null
in my controller methods. The reason seems to be that instead of a KeycloakAuthenticationToken
, a KeycloakPrincipal
should be used as the type now. Any idea why this is? And is there a way to use the KeycloakAuthenticationToken
?
I use the KeycloakAuthenticationToken
because I do token.getAccount().getRoles()
at a certain point to retrieve the current user roles.
from spring-addons.
The issue with the null
principal is due to spring-projects/spring-framework#26380 If you can confirm that my changes for KeycloakAuthRequestPostProcessor
are what they should be then this issue can be closed.
from spring-addons.
Hi @wimdeblauwe , as you found out, version 2.3.0 introduced breaking changes in claims declaration.
Sorry for migration effort :/
The motivation was to get closer to OpenID specs.
The motivation for this motivation is to reuse some code from my OpenID Authorization
implementation and as so maintain less code.
As you noted, prior to 2.3.0, using .name(email)
was setting preferredUsername
which was a rather bad idea.
I understand the name
from javax.security.Principal
as a way to define identity, which is subject
in OpenID world.
KeycloakAuthRequestPostProcessor::name
was just a shortcut and changing its behavior to set subject
instead of preferedUsername
(which is a Keycloak private claim) was too confusing IMO. So I just dropped it.
P.S.
keycloak AccessToken
extends IDToken
, so if you externalize idToken
consumer function, you could use it from accessToken
one (and avoid the code duplication in your last sample).
from spring-addons.
Ok, thank you for the quick reply. So my changed code is correct?
from spring-addons.
It seems good. Doesn't it work as expected ?
from spring-addons.
from spring-addons.
Ok, nice.
from spring-addons.
Related Issues (20)
- NPE when trying to protect client HOT 2
- After 7.3.0 authentication for web mvc client against keycloak ends in endless redirect HOT 8
- Exception thrown when `post-logout-redirect-path` configuration property is null HOT 1
- Post-login success & failure URI params and headers on authentication request are ignored in reactive applications HOT 1
- `authorization-request-params` ignored HOT 1
- POST /logout response Forbidden 403 HOT 9
- Support several JWT authentication converters (or converters with a `@Qualifier` which is not `jwtAuthenticationConverter`)
- Doubled path-prefix by `SpringAddonsServerOAuth2AuthorizationRequestResolver` HOT 1
- Allow anonymous CORS preflight requests (`OPTIONS` requests to a path configured with CORS) HOT 1
- Configuration properties to add parameters to token requests HOT 1
- Spring Starter OICD, Resource Server: Option to disable the default behavior for authorized/protected routes HOT 1
- BFF configuration token is not refreshed HOT 3
- Getting response 401 (Unauthorized) for permit-all requests after update HOT 2
- (Not a bug)Why the custom JwtDecoder bean is useless HOT 2
- `spring-security-oauth2-resource-server`, `spring-security-oauth2-client` and `spring-webflux` should be `optional` dependencies HOT 1
- Support for resource owner password credential flow (ROPC) HOT 1
- Handle CORS Requests with Keycloak's "allowed-origins" claim like the keycloak adapter (now deprecated) HOT 2
- Downstream services times out reading request body when csrf is set to cookie-accessible-from-js HOT 2
- Expand servlet-client tutorial to show calling servlet-resource-server with user that has NICE privileges. HOT 2
- Logout Issue (Invalid CSRF Token) HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from spring-addons.