-
Notifications
You must be signed in to change notification settings - Fork 6.1k
Propagate Authorities From Previous Factors #17790
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
6eb00d0
to
b48b10a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR @jzheaux! I've provided feedback inline, but my main pieces of feedback are:
- The
AuthenticationManager
should not be accessing theSecurityContext
. Instead, we should have the controller (e.g.Filter
) that invokes theAuthenticationManager
perform the merging of the twoAuthentication
instances. - I think that the builder APIs should function independently of MFA and should work for any properties on the
Authentication
. Doing this would also allow deprecation of thesetAuthenticated
method. - I don't think we should have an
Authentication.apply(Authentication)
method. Especially so if it is only applying the authorities and ignoring many other properties that are on theAuthentication
object.
core/src/main/java/org/springframework/security/authentication/AbstractAuthenticationToken.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/springframework/security/authentication/AbstractAuthenticationToken.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/springframework/security/authentication/AbstractAuthenticationToken.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/springframework/security/authentication/AbstractAuthenticationToken.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/springframework/security/authentication/AbstractAuthenticationToken.java
Outdated
Show resolved
Hide resolved
cas/src/main/java/org/springframework/security/cas/authentication/CasAuthenticationToken.java
Outdated
Show resolved
Hide resolved
cas/src/main/java/org/springframework/security/cas/authentication/CasAuthenticationToken.java
Outdated
Show resolved
Hide resolved
...ava/org/springframework/security/authentication/DelegatingReactiveAuthenticationManager.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you help me to understand why this is specified?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Deserialization of concrete implementations fails otherwise. With the inclusion of a default
method, Java now treats it like an abstract
class from a serialization perspective. From what I understand, any class, abstract or otherwise, should have a version id if it extends Serializable
.
...ngframework/security/saml2/provider/service/authentication/Saml2AssertionAuthentication.java
Outdated
Show resolved
Hide resolved
b48b10a
to
41398f0
Compare
The sample better matches a value that would be used in the constructor Issue spring-projectsgh-16276
Given that 7e3bf96 changes the InteractiveAuthenticationSuccessEvent serialization sample, this commit syncs up the 6.5.x version to match. Issue spring-projectsgh-16276
Given that 7e3bf96 changes the InteractiveAuthenticationSuccessEvent serialization sample, this commit syncs up the 7.0.x version to match. Closes spring-projectsgh-16276
This commit adds a new default method to Authentication for the purposes of creating a Builder based on the current authentication, allowing other authentications to be applied to it as a composite. It also adds Builders for each one of the authentication result classes.
This commit allows looking up the current authentication and applying it to the latest authentication. This is specifically handy when collecting authorities gained from each authentication factor.
This commit provides the SecurityContextHolderStrategy bean to ProviderManager instances that the HttpSecurity DSL constructs.
- Added remaining properties - Removed apply method since Spring Security isn't using it right now - Made builders extensible since the authentications are extensible
31634e2
to
5e94df2
Compare
5e94df2
to
4d89979
Compare
Uh oh!
There was an error while loading. Please reload this page.
Applications can use
AuthenticationBuilder
to apply existing authentications to new ones.For example, if the current logged in user is represented by:
And they provide a second set of authenticated credentials, represented by:
Then the first factor can be applied to the second factor as follows:
This draft PR adds a basic builder to each Authentication implementation that implements
Authentication.Builder
. In order to simplify upgrades,toBuilder
by default returns a no-op implementation ofAuthentication.Builder
that ultimately returns the same authentication unchanged.