복붙노트

[SPRING] 스프링 보안 : 신뢰할 수있는 서브넷을 제외한 모든 요청을 인증합니다.

SPRING

스프링 보안 : 신뢰할 수있는 서브넷을 제외한 모든 요청을 인증합니다.

내 config 클래스에이 줄이 있습니다.

http.authorizeRequests()
        .anyRequest().authenticated();

이제 신뢰할 수있는 서브넷의 모든 요청이 승인없이 Spring Security를 ​​우회하기를 바랍니다.

따라서 구성을 수정했습니다.

http.authorizeRequests()
        .antMatchers("/**").hasIpAddress(127.0.0.1/24)
        .anyRequest().authenticated();

이제 사설 서브넷 내부의 컴퓨터 간 통신이 올바르게 작동합니다. 유감스럽게도 웹 브라우저의 승인 된 클라이언트는 매번 401 오류가 발생합니다.

OR 조건을 작성하는 방법이 있습니까?

이와 같이 클라이언트는 ip #. #. #. # OR이 승인되어야합니다.

해결법

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

    1.hasIpAddress와 authenticated 또는 hasRole과 같은 메소드는 간단한 액세스 규칙을 위해 존재합니다. 그 아래에서는 모두 표현식을 추가하기 위해 액세스 메소드를 호출합니다. 이것을 사용하여보다 복잡한 보안 표현식을 작성할 수도 있습니다.

    hasIpAddress와 authenticated 또는 hasRole과 같은 메소드는 간단한 액세스 규칙을 위해 존재합니다. 그 아래에서는 모두 표현식을 추가하기 위해 액세스 메소드를 호출합니다. 이것을 사용하여보다 복잡한 보안 표현식을 작성할 수도 있습니다.

    http.authorizeRequests()        
        .anyRequest().access("hasIpAddress('127.0.0.1/24') or isAuthenticated()");
    

    Spring Security 레퍼런스 가이드에 이에 대한 작은 언급이있다.

  2. from https://stackoverflow.com/questions/35890632/spring-security-authorize-all-request-except-coming-from-trusted-subnet by cc-by-sa and MIT license