복붙노트

[SPRING] 폼 로그인없이 스프링 보안

SPRING

폼 로그인없이 스프링 보안

내 애플리케이션에서 스프링 보안 표현식을 구현했다. 스프링 컨트롤러 :

@Controller
@RequestMapping("init")
public class InitController {
    @PreAuthorize("hasRole('ROLE_ADMIN')")
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public @ResponseBody String home(){
        return "This is the init page";
    }
}

이 보안 구성의 경우 :

<http auto-config="true" create-session="stateless" use-expressions="true">
    <intercept-url pattern="/_ah*" access="permitAll" />
    <intercept-url pattern="/init/*" access="hasRole('ROLE_ADMIN')"/>
    <intercept-url pattern="/init*" access="hasRole('ROLE_ADMIN')"/>
</http>

이 리소스에 액세스 할 때 기본 Spring 로그인 폼이 표시됩니다 (http : // localhost : 8888 / spring_security_login). 그러나 이런 일이 발생하지 않도록하고 요청 헤더에 삽입 할 자격 증명을 갖고 싶습니다. "x-authorization-key"또는 그 시나리오에 맞는 것을 선택하십시오.

이것에 대한 가능한 해결책은 무엇입니까?

머리글

해결법

  1. ==============================

    1.아마 auto-config가하는 일에 대한 설명을 읽은 다음 폼 - 로그인을 사용하지 않도록 제거해야합니다. 사용하려는 구성을 구체적으로 구성하면 구성이 명확 해집니다.

    아마 auto-config가하는 일에 대한 설명을 읽은 다음 폼 - 로그인을 사용하지 않도록 제거해야합니다. 사용하려는 구성을 구체적으로 구성하면 구성이 명확 해집니다.

    질문에서 x-authorization-key 헤더에 포함되기를 원하는 것이 명확하지 않습니다. 클라이언트 ID 및 공유 비밀 번호만으로 인증하는 경우 기본 인증을 이미 사용할 수 있으므로 기본 인증을 사용할 수 있으며 구성에 을 추가 할 수 있습니다. 좀 더 맞춤화 된 것을 가지고 있다면 커스텀 필터를 구현하여 스프링 보안 필터 체인에 추가하여 자격 증명을 추출하고 처리해야 할 것입니다.

    인증 메커니즘의 적합성은 실제로 구성되어있는 것에 달려 있습니다. 일반적으로 사용자는 인증 할 때로드되는 역할을 할당받습니다. 일반적으로 어떤 종류의 데이터베이스에서로드됩니다. hasRole 표현식은 현재 사용자에게 지정된 역할이 있는지 여부를 단순히 확인합니다. 종종 프레임 워크에 쉽게 꽂을 수있는 표준 형식으로 사용자 정보를로드하는 UserDetailsService 만 만들어야합니다. 이것은 다른 곳에서도 길이 있습니다. 좀 더 맞춤화 된 것이 필요하다면 GAE 통합에 대한이 블로그 기사에는 복잡한 시스템과 통합하는 방법에 대한 세부 정보가 포함되어 있습니다.

    create-session = 'stateless'를 사용하면 Spring Security는 세션을 생성하거나 사용하지 않습니다.

    추신 동일한 URL을 처리하는 컨트롤러와 URL 수준 모두에서 동일한 보안 특성을 포함 할 필요는 없습니다.

  2. from https://stackoverflow.com/questions/11985709/spring-security-without-form-login by cc-by-sa and MIT license