2

최근 내 REST 서비스에 스프링 보안 기본 인증을 사용하고 있습니다. 다음은 스프링 보안 기본 인증은 한 번만 발생합니다

보안 XML 구성입니다 : 때
<springframework.version>4.1.0.RELEASE</springframework.version> 
<spring.security.version>3.2.5.RELEASE</spring.security.version> 

내가 "/ 나머지"로 시작 URL 내 REST 서비스를 매핑 : 내가 사용

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:security="http://www.springframework.org/schema/security" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/security 
     http://www.springframework.org/schema/security/spring-security.xsd"> 

    <security:http pattern="/rest/**" create-session="never" use-expressions="true"> 
     <security:http-basic /> 
     <security:intercept-url pattern="/rest/auth/**" access="isAuthenticated()"/> 
    </security:http> 

    <security:authentication-manager alias="authenticationManager"> 
     <security:authentication-provider> 
      <security:user-service> 
       <security:user name="admin" password="admin" authorities="ROLE_ADMIN"/> 
      </security:user-service> 
     </security:authentication-provider> 
     <security:authentication-provider user-service-ref="userDetailsService"> 
      <security:password-encoder hash="sha-256" /> 
     </security:authentication-provider> 
    </security:authentication-manager> 

    <security:global-method-security jsr250-annotations="enabled" pre-post-annotations="enabled"/> 
</beans> 

스프링 프레임 워크와 스프링 보안 처음 URL에 액세스하면 브라우저는 기본 인증의 사용자 이름과 암호 필드를 입력하라는 메시지를 표시합니다. 올바른 자격증 명으로 채우고 내 컨트롤러가 성공적으로 액세스했습니다.

그러나 브라우저에서 다시 동일한 URL에 액세스하려고하면 기본 인증의 사용자 이름과 암호 필드를 다시 묻지 않고 직접 URL에 액세스하지 않습니다.

저는 create-session 속성을 never로 설정했기 때문에 브라우저가 항상 기본 인증을 요구한다고 생각합니다.

그래서 나는 무엇인가 놓치고 있습니까?

답변

1

브라우저 캐시 자격 증명. 때때로 캐시를 지우는 것이 도움이되지 않습니다. 유일하게 신뢰할 수있는 방법은 Chrome의 시크릿 창 (Ctrl + N)을 사용하는 것입니다. 그러나 하나의 시크릿 창당 하나의 프롬프트가 표시됩니다. 따라서 다시 시크릿 창에 들어가려면 시크릿 창이 필요합니다.

기본 인증을 수동으로 테스트 한 유일한 방법입니다.

+0

나는 "결코"사용하지 않는 및 "무"와 여전히 시크릿 창은 모두 값을 한 번하라는 메시지가 그것을 시도하지 않았다. 고마워. –

0

작성 세션 용 javadoc에서. 귀하의 응용 프로그램이 세션을 만들고 그 세션이 사용되고 있다고 생각합니다.

속성 : create-session Spring Security 클래스가 HTTP 세션을 생성하는 데 대한 열의를 조정합니다. 설정되지 않은 경우 기본값은
"ifRequired"입니다. "stateless"를 사용하면 응용 프로그램이 세션을 만들지 않는다는 것을 의미합니다. 이 은 스프링 보안이 세션을 생성하지 않는다는 것을 "결코"사용하지 않았지만, 애플리케이션이 인 경우 하나를 사용하게됩니다.

데이터 형식 : 문자열 열거 값 : 은 - 을 ifRequired - 항상 - 결코 - 무

사용 시도해야

대신

"무"

+0

여전히 "stateless"값으로 작동하지 않습니다 :(. –