[SPRING] RESTful 끝점에 대한 스프링 폼 기반 로그인을 비활성화하려면 어떻게합니까?
SPRINGRESTful 끝점에 대한 스프링 폼 기반 로그인을 비활성화하려면 어떻게합니까?
auto-config = 'true'에 따라 기본 및 폼 기반 인증을 사용하여 스프링 보안을 구성했습니다.
/ api / **에있는 엔드 포인트가 양식 기반 보안을 사용하지 않기를 바란다. / api / ** 외부의 다른 엔드 포인트는 양식 기반 로그인을 사용해야합니다. / api / ** 아래에 자격 증명을 제공하지 않은이 끝점에 대한 모든 호출에 401 응답을 보내고 싶습니다.
업데이트 : 아래의 Luke Taylor의 의견에 감사 드리며 다음 솔루션을 제안했습니다.
참고 :이 기술은 스프링 보안 3.1에서만 적용 할 수 있습니다.
처음에는 / api / **를 사용했습니다. 사용 가능한 경우 세션을 사용하지만 결코 세션을 생성하지 않습니다.이 작업은 create-session = "never"및
<http pattern="/api/**" create-session="never" use-expressions="true">
<http-basic />
<session-management />
<intercept-url pattern="/api/**" access="hasRole('API_ACCESS')"/>
</http>
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/" access="permitAll"/>
<intercept-url pattern="/**" access="isAuthenticated()"/>
</http>
해결법
-
==============================
1.Spring Security 3.1을 사용하면 가장 좋은 방법은 두 개의 분리 된
요소를 사용하여 응용 프로그램의 안정적이지 않은 부분과 별도의 필터 체인을 분리하는 것입니다. 기본 체인은 정상적인 양식 로그인 구성을 사용할 수있는 반면, 안심할 수있는 API 체인은 상태가없고 기본 인증을 사용하도록 구성 할 수 있습니다. Spring Security 3.1을 사용하면 가장 좋은 방법은 두 개의 분리 된
요소를 사용하여 응용 프로그램의 안정적이지 않은 부분과 별도의 필터 체인을 분리하는 것입니다. 기본 체인은 정상적인 양식 로그인 구성을 사용할 수있는 반면, 안심할 수있는 API 체인은 상태가없고 기본 인증을 사용하도록 구성 할 수 있습니다. 그러면 다음과 같이됩니다.
<http pattern="/api/**" create-session="stateless"> <intercept-url pattern="/api/**" access="ROLE_API_USER" /> <http-basic /> </http> <!-- No pattern attribute, so defaults to matching any request --> <http> <intercept-url pattern="/**" access="ROLE_USER" /> <form-login /> </http>
체인 정의는 가장 구체적인 패턴에서 가장 일반적인 순서로 정렬되어야하므로 기본 체인이 마지막에옵니다.
from https://stackoverflow.com/questions/11946903/how-can-i-disable-spring-form-based-login-for-restful-endpoints by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring을 사용하여 EhCache 인스턴스 가져 오기 ... 지능적으로 (0) | 2019.01.14 |
---|---|
[SPRING] 서버 측 이미지 생성 용 JavaFX (0) | 2019.01.14 |
[SPRING] 스프링 XML 구성 파일에서 Java Date 객체를 초기화하는 방법은 무엇입니까? (0) | 2019.01.14 |
[SPRING] Spring을 사용하여 인증이 필요한 MongoDB에 연결하는 방법 (0) | 2019.01.14 |
[SPRING] Spring JPA의 기존 엔티티를 참조하는 새로운 엔티티를 저장하는 방법은 무엇입니까? (0) | 2019.01.14 |