Add AuthenticationTrustResolver.isAuthenticated
This commit is contained in:
committed by
Marcus Hert Da Coregio
parent
3093908a6e
commit
750cb30ce4
+1
-1
@@ -147,7 +147,7 @@ public abstract class SecurityExpressionRoot implements SecurityExpressionOperat
|
||||
|
||||
@Override
|
||||
public final boolean isAuthenticated() {
|
||||
return !isAnonymous();
|
||||
return this.trustResolver.isAuthenticated(getAuthentication());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+16
-4
@@ -61,13 +61,25 @@ public interface AuthenticationTrustResolver {
|
||||
* <p>
|
||||
* @param authentication to test (may be <code>null</code> in which case the method
|
||||
* will always return <code>false</code>)
|
||||
* @return <code>true</code> the passed authentication token represented an anonymous
|
||||
* principal and is authenticated using a remember-me token, <code>false</code>
|
||||
* otherwise
|
||||
* @return <code>true</code> the passed authentication token represented an
|
||||
* authenticated user ({@link #isAuthenticated(Authentication)} and not
|
||||
* {@link #isRememberMe(Authentication)}, <code>false</code> otherwise
|
||||
* @since 6.1
|
||||
*/
|
||||
default boolean isFullyAuthenticated(Authentication authentication) {
|
||||
return !isAnonymous(authentication) && !isRememberMe(authentication);
|
||||
return isAuthenticated(authentication) && !isRememberMe(authentication);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the {@link Authentication} is not null, authenticated, and not anonymous.
|
||||
* @param authentication the {@link Authentication} to check.
|
||||
* @return true if the {@link Authentication} is not null,
|
||||
* {@link #isAnonymous(Authentication)} returns false, &
|
||||
* {@link Authentication#isAuthenticated()} is true.
|
||||
* @since 6.1.7
|
||||
*/
|
||||
default boolean isAuthenticated(Authentication authentication) {
|
||||
return authentication != null && authentication.isAuthenticated() && !isAnonymous(authentication);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
-3
@@ -133,8 +133,7 @@ public final class AuthenticatedAuthorizationManager<T> implements Authorization
|
||||
|
||||
@Override
|
||||
boolean isGranted(Authentication authentication) {
|
||||
return authentication != null && !this.trustResolver.isAnonymous(authentication)
|
||||
&& authentication.isAuthenticated();
|
||||
return this.trustResolver.isAuthenticated(authentication);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -143,7 +142,7 @@ public final class AuthenticatedAuthorizationManager<T> implements Authorization
|
||||
|
||||
@Override
|
||||
boolean isGranted(Authentication authentication) {
|
||||
return authentication != null && this.trustResolver.isFullyAuthenticated(authentication);
|
||||
return this.trustResolver.isFullyAuthenticated(authentication);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+24
@@ -25,6 +25,7 @@ import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.authority.AuthorityUtils;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
@@ -134,4 +135,27 @@ public class SecurityExpressionRootTests {
|
||||
assertThat(this.root.hasAnyAuthority("ROLE_A", "NOT")).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void isAuthenticatedWhenAuthenticatedNullThenException() {
|
||||
this.root = new SecurityExpressionRoot((Authentication) null) {
|
||||
};
|
||||
assertThatIllegalArgumentException().isThrownBy(() -> this.root.isAuthenticated());
|
||||
}
|
||||
|
||||
@Test
|
||||
void isAuthenticatedWhenTrustResolverFalseThenFalse() {
|
||||
AuthenticationTrustResolver atr = mock(AuthenticationTrustResolver.class);
|
||||
given(atr.isAuthenticated(JOE)).willReturn(false);
|
||||
this.root.setTrustResolver(atr);
|
||||
assertThat(this.root.isAuthenticated()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void isAuthenticatedWhenTrustResolverTrueThenTrue() {
|
||||
AuthenticationTrustResolver atr = mock(AuthenticationTrustResolver.class);
|
||||
given(atr.isAuthenticated(JOE)).willReturn(true);
|
||||
this.root.setTrustResolver(atr);
|
||||
assertThat(this.root.isAuthenticated()).isTrue();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+53
@@ -18,6 +18,7 @@ package org.springframework.security.authentication;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.authority.AuthorityUtils;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -63,4 +64,56 @@ public class AuthenticationTrustResolverImplTests {
|
||||
assertThat(trustResolver.getRememberMeClass()).isEqualTo(TestingAuthenticationToken.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void isAuthenticatedWhenAuthenticationNullThenFalse() {
|
||||
AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl();
|
||||
Authentication authentication = null;
|
||||
assertThat(trustResolver.isAuthenticated(authentication)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void isAuthenticatedWhenAuthenticationNotAuthenticatedThenFalse() {
|
||||
AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl();
|
||||
TestingAuthenticationToken authentication = new TestingAuthenticationToken("user", "password");
|
||||
assertThat(trustResolver.isAuthenticated(authentication)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void isAuthenticatedWhenAnonymousThenFalse() {
|
||||
AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl();
|
||||
AnonymousAuthenticationToken authentication = new AnonymousAuthenticationToken("key", "principal",
|
||||
AuthorityUtils.createAuthorityList("ROLE_ANONYMOUS"));
|
||||
assertThat(trustResolver.isAuthenticated(authentication)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void isFullyAuthenticatedWhenAuthenticationNullThenFalse() {
|
||||
AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl();
|
||||
Authentication authentication = null;
|
||||
assertThat(trustResolver.isFullyAuthenticated(authentication)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void isFullyAuthenticatedWhenAuthenticationNotAuthenticatedThenFalse() {
|
||||
AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl();
|
||||
TestingAuthenticationToken authentication = new TestingAuthenticationToken("user", "password");
|
||||
assertThat(trustResolver.isFullyAuthenticated(authentication)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void isFullyAuthenticatedWhenAnonymousThenFalse() {
|
||||
AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl();
|
||||
AnonymousAuthenticationToken authentication = new AnonymousAuthenticationToken("key", "principal",
|
||||
AuthorityUtils.createAuthorityList("ROLE_ANONYMOUS"));
|
||||
assertThat(trustResolver.isFullyAuthenticated(authentication)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void isFullyAuthenticatedWhenRememberMeThenFalse() {
|
||||
AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl();
|
||||
RememberMeAuthenticationToken authentication = new RememberMeAuthenticationToken("key", "user",
|
||||
AuthorityUtils.createAuthorityList("ROLE_USER"));
|
||||
assertThat(trustResolver.isFullyAuthenticated(authentication)).isFalse();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user