인증을 위한 Entry point는 보통 아래와 같이 security config이 configure 메소드에서 설정을 한다.
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf()
.disable();
http
.httpBasic()
.authenticationEntryPoint(samlEntryPoint);
.httpBasic() 은 아래와 같이 미리정의된 HttpBasicConfigurer 을 실행해준다.
/**
* Creates a new instance
* @see HttpSecurity#httpBasic()
*/
public HttpBasicConfigurer() {
realmName(DEFAULT_REALM);
LinkedHashMap<RequestMatcher, AuthenticationEntryPoint> entryPoints = new LinkedHashMap<>();
entryPoints.put(X_REQUESTED_WITH, new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED));
DelegatingAuthenticationEntryPoint defaultEntryPoint = new DelegatingAuthenticationEntryPoint(entryPoints);
defaultEntryPoint.setDefaultEntryPoint(this.basicAuthEntryPoint);
this.authenticationEntryPoint = defaultEntryPoint;
}
단 주의할 것은 위 httpBasic을 사용시 기본 authentication entry point는 /auth이라는 것이다.
아래와 같이 /saml/login url에 대해서 entrypoint 를 필터로 걸었다면 authentication entry 포인트는 httpBasic /auth와 /saml/login 두개가 된다.
@Bean
public FilterChainProxy samlFilter() throws Exception {
...
chains.add(new DefaultSecurityFilterChain(new AntPathRequestMatcher("/saml/login/**"),
samlEntryPoint));
...
return new FilterChainProxy(chains);
}
이것을 모르고 /auth에서 인증이 왜 시작 되는지 한참을 찾고 말았다. ㅠㅠ
'Backend Development > Spring boot' 카테고리의 다른 글
[Spring boot] Spring Security login 예제 (filter 없이 수동 Autentication) (0) | 2022.05.22 |
---|---|
[Spring boot] Spring Security saml2.0 예제 분석 (spring-security-saml2-core) (0) | 2022.05.12 |
[Spring boot] SAML2.0 SSO 간단 정리 (0) | 2022.05.10 |
[Spring boot] OAuth2 login(Google, Facebook, Naver, Kakao) (0) | 2022.03.15 |
[Spring boot] Spring Security 분석 - Session timeout 설정하기 (0) | 2022.03.14 |