토리맘의 한글라이즈 프로젝트 logo 토리맘의 한글라이즈 프로젝트

스프링 시큐리티 공식 레퍼런스를 한글로 번역한 문서입니다.

전체 목차는 여기에 있습니다.

목차:


22.5. The Security Namespace

여기에선 시큐리티 네임스페이스에서 사용할 수 있는 요소와, 각 요소가 생성하는 기본적인 빈에 대해 설명한다 (각 클래스와 동작 방식은 이미 알고 있다고 가정한다. 자세한 정보는 프로젝트 Javadoc이나 이 문서의 다른 챕터를 참고해라). 네임스페이스를 사용해본 적이 없다면 네임스페이스 설정 입문 챕터를 읽어봐라. 이번 챕터는 입문 챕터를 보충 설명하기 위한 챕터다. 스키마 기반 설정을 편집할 땐 괜찮은 XML 에디터를 사용하는 게 좋다. XML 에디터를 사용하면 문맥상 사용할 수 있는 요소나 속성을 그 용도와 함께 표기해준다. 네임스페이스는 RELAX NG Compact 포맷으로 작성하고 이후에 XSD 스키마로 변환된다. 이 포맷에 익숙하다면 스키마 파일을 직접 확인해 보는 것도 괜찮다.

22.5.1. Web Application Security

<debug>

스프링 시큐리티 디버깅 인프라를 활성화한다. 사람이 읽을 수 있는 (멀티 라인 사용) 디버깅 정보를 출력하므로, 스프링 필터로 들어오는 요청을 모니터링할 수 있다. 요청 파라미터나 헤더같은 민감한 정보가 포함될 수 있으므로 개발 환경에서만 사용해야 한다.

<http>

어플리케이션에서 <http> 요소를 사용하면 “springSecurityFilterChain”이라는 FilterChainProxy 빈을 생성하며, 이 요소에 있는 설정대로 FilterChainProxy 안에 필터 체인을 구축한다. 스프링 시큐리티 3.1부터 http 요소를 더 추가해서 다른 필터 체인을 생성할 수 있다. 일부 핵심 필터는 항상 필터 체인에 추가되며, 속성이나 하위 요소 존재 여부에 따라 스택에 추가하는 필터도 있다. 표준 필터의 위치는 고정이기 때문에 (네임스페이스 소개 섹션에 있는 필터 순서 테이블 참고) 이전처럼 사용자가 FilterChainProxy 빈에 필터 체인을 직접 명시해야 했을 때 흔히 발생하는 오류 요소를 제거했다. 물론 설정을 완전히 제어해야 한다면 직접 명시하는 것도 가능하다.

AuthenticationManager를 참조해야 하는 필터는 전부, 네임스페이스 설정으로 생성한 내부 인스턴스를 자동으로 주입받는다.

<http> 네임스페이스 블록은 항상 SecurityContextPersistenceFilter, ExceptionTranslationFilter, FilterSecurityInterceptor를 생성한다. 이 필터는 고정이며 변경할 수 없다.

<http> Attributes

<http> 요소에 있는 속성으로 핵심 필터의 프로퍼티를 조절할 수 있다.

Child Elements of <http>

<access-denied-handler>

이 요소로는 error-page 속성으로 ExceptionTranslationFilter에서 사용하는 디폴트 AccessDeniedHandlererrorPage 프로퍼티를 설정하거나, ref 속성으로 자체 구현체를 제공할 수 있다. 자세한 내용은 ExceptionTranslationFilter 섹션에서 설명한다.

Parent Elements of <access-denied-handler>
<access-denied-handler> Attributes

<cors>

이 요소로 CorsFilter를 설정할 수 있다. CorsFilterCorsConfigurationSource를 따로 선언하지 않았고, 클래스패스에 스프링 MVC가 있으면 HandlerMappingIntrospectorCorsConfigurationSource로 사용한다.

<cors> Attributes

<cors> 요소에 있는 속성으로 cors 요소를 제어한다.

Parent Elements of <cors>

<headers>

이 요소는 응답과 함께 전송할 추가 (보안) 헤더를 설정한다. 여러 헤더를 쉽게 설정할 수 있으며, header 요소로 커스텀 헤더를 설정할 수도 있다. 추가적인 정보는 이 문서의 보안 헤더 섹션에서 확인할 수 있다.

<headers> Attributes

<headers> 요소에 있는 속성으로 headers 요소를 제어한다.

Parent Elements of <headers>
Child Elements of <headers>

<cache-control>

브라우저에서 보호 중인 페이지를 캐시에 저장하지 않게 만들려면 Cache-Control, Pragma, Expires 헤더를 추가해라.

<cache-control> Attributes
Parent Elements of <cache-control>

<hsts>

활성화하면 보호 중인 모든 요청에 대한 응답에 Strict-Transport-Security 헤더를 추가한다. 이 헤더를 사용하고 나면 브라우저에서 자동으로 HTTPS 요청을 보낸다.

<hsts> Attributes
Parent Elements of <hsts>

<hpkp>

활성화하면 보호 중인 모든 요청에 대한 응답에 Public Key Pinning Extension for HTTP 헤더를 추가한다. HTTPS 웹사이트는 hpkp 헤더로 잘못 발급한 인증서나 허위 인증서를 사용하는 공격을 방지할 수 있다.

<hpkp> Attributes
Parent Elements of <hpkp>

<pins>

pin 리스트

Child Elements of <pins>

<pin>

값에는 base64로 인코딩한 SPKI 핑거프린트를, 속성에는 암호화 해시 알고리즘을 지정한다.

<pin> Attributes
Parent Elements of <pin>

<content-security-policy>

활성화하면 응답에 Content Security Policy (CSP) 헤더를 추가한다. CSP는 웹 어플리케이션에서 XSS(cross-site scripting)같은 컨텐츠 인젝션 공격 취약성을 개선할 때 사용할 수 있는 메커니즘이다.

<content-security-policy> Attributes
Parent Elements of <content-security-policy>

<referrer-policy>

활성화하면 응답에 Referrer Policy 헤더를 추가한다

<referrer-policy> Attributes
Parent Elements of <referrer-policy>

<feature-policy>

활성화하면 응답에 Feature Policy 헤더를 추가한다.

<feature-policy> Attributes
Parent Elements of <feature-policy>

<frame-options>

활성화하면 응답에 X-Frame-Options 헤더를 추가한다. 최신 브라우저는 이 헤더가 있으면 보안 정보를 확인해서 클릭재킹 공격을 막는다.

<frame-options> Attributes
Parent Elements of <frame-options>

<xss-protection>

reflected / Type-1 Cross-Site Scripting (XSS) 공격을 방어하려면 응답에 X-XSS-Protection 헤더를 추가해라. 단, 이 방법은 XSS 공격을 완전히 막아주진 못한다!

<xss-protection> Attributes
Parent Elements of <xss-protection>

<content-type-options>

응답에 X-Content-Type-Options header 값을 nosniff로 추가한다. IE8+와 크롬 확장 프로그램에선 이 헤더로 MIME-sniffing을 막는다.

<content-type-options> Attributes
Parent Elements of <content-type-options>

응답에 다른 헤더를 추가하려면 name, value를 모두 지정해야 한다.

<header-attributes> Attributes
Parent Elements of <header>

<anonymous>

AnonymousAuthenticationFilter와 (필터 스택에), AnonymousAuthenticationProvider를 추가한다. IS_AUTHENTICATED_ANONYMOUSLY 속성을 사용할 때 필요하다.

Parent Elements of <anonymous>
<anonymous> Attributes

<csrf>

이 요소는 어플리케이션에 CSRF(Cross Site Request Forger) 방어 기능을 추가한다. 또한 인증 성공 시 “GET” 요청만 캐시하도록 디폴트 RequestCache를 업데이트한다. 추가 정보는 이 문서의 Cross Site Request Forgery (CSRF) 섹션에서 확인할 수 있다.

Parent Elements of <csrf>
<csrf> Attributes

<custom-filter>

이 요소는 필터 체인에 필터를 추가할 때 사용한다. 요소 자체에서 빈을 추가로 생성하진 않지만, 이미 어플리케이션 컨텍스트에 정의한 javax.servlet.Filter 타입 빈을 찾아 스프링 시큐리티가 관리하는 필터 체인의 특정 위치에 추가해 준다. 자세한 설명은 네임스페이스 챕터에서 확인할 수 있다.

Parent Elements of <custom-filter>
<custom-filter> Attributes

<expression-handler>

표현식 기반 접근 제어를 활성화한 경우에 사용할 SecurityExpressionHandler 인스턴스를 정의한다. 제공하지 않으면 디폴트 구현체를 (ACL 미지원) 사용한다.

Parent Elements of <expression-handler>
<expression-handler> Attributes

<form-login>

UsernamePasswordAuthenticationFilter를 필터 스택에 추가하고, LoginUrlAuthenticationEntryPoint를 어플리케이션 컨텍스트에 추가해서 필요할 때 인증을 제공한다. 이 요소는 네임스페이스가 생성한 다른 entry point보다 항상 우선시된다. 속성을 제공하지 않으면 “/login” URL에 로그인 페이지를 자동으로 생성한다. 이 동작은 form-login 속성으로 커스텀할 수 있다.

Parent Elements of <form-login>
<form-login> Attributes

<oauth2-login>

OAuth 2.0 Login 기능을 설정해서 OAuth 2.0, OpenID Connect 1.0 Provider로 인증한다.

Parent Elements of <oauth2-login>
<oauth2-login> Attributes

<oauth2-client>

OAuth 2.0 클라이언트 기능을 설정한다.

Parent Elements of <oauth2-client>
<oauth2-client> Attributes
Child Elements of <oauth2-client>

<authorization-code-grant>

OAuth 2.0 인가 코드 부여를 설정한다.

Parent Elements of <authorization-code-grant>
<authorization-code-grant> Attributes

<client-registrations>

OAuth 2.0 또는 OpenID Connect 1.0 Provider에 등록한 클라이언트(ClientRegistration)의 컨테이너 요소.

Child Elements of <client-registrations>

<client-registration>

OAuth 2.0 또는 OpenID Connect 1.0 Provider에 등록한 클라이언트를 나타낸다.

Parent Elements of <client-registration>
<client-registration> Attributes
<provider>

OAuth 2.0 또는 OpenID Connect 1.0 Provider에 관한 설정 정보

Parent Elements of <provider>
<provider> Attributes

<oauth2-resource-server>

설정에 BearerTokenAuthenticationFilter, BearerTokenAuthenticationEntryPoint, BearerTokenAccessDeniedHandler를 추가한다. <jwt><opaque-token>을 함께 지정해야 한다.

Parents Elements of <oauth2-resource-server>
Child Elements of <oauth2-resource-server>
<oauth2-resource-server> Attributes

<jwt>

JWT를 사용하는 OAuth 2.0 리소스 서버를 나타낸다.

Parent Elements of <jwt>
<jwt> Attributes

<opaque-token>

opaque 토큰을 사용하는 OAuth 2.0 리소스 서버를 나타낸다.

Parent Elements of <opaque-token>
<opaque-token> Attributes

<http-basic>

설정에 BasicAuthenticationFilter, BasicAuthenticationEntryPoint를 추가한다. 후자는 폼 기반 로그인을 활성화하지 않은 경우에만 사용하는 설정 엔트리 포인트다.

Parent Elements of <http-basic>
<http-basic> Attributes

<http-firewall> Element

네임스페이스가 생성한 FilterChainProxy에 커스텀 HttpFirewall 구현체를 주입할 수 있는 최상위 요소다. 대부분은 디폴트 구현체로도 충분할 거다.

<http-firewall> Attributes

<intercept-url>

이 요소로는 어플리케이션에서 관심있는 URL 패턴 셋을 정의하고, 이 URL을 처리하는 방법을 설정할 수 있다. FilterSecurityInterceptor에서 사용하는 FilterInvocationSecurityMetadataSource는 이 요소에 있는 값으로 설정한다. 예를 들어 특정 URL은 HTTPS로 접근해야 하는 경우엔 ChannelProcessingFilter를 설정할 수도 있다. 지정한 패턴과 요청을 매칭할 때는 요소를 선언한 순서대로 매칭한다. 따라서 가장 구체적인 패턴이 앞에 오고, 가장 일반적인 패턴이 마지막에 와야 한다.

Parent Elements of <intercept-url>
<intercept-url> Attributes

<port-mappings> 설정을 추가하면, 이 요소를 통해 SecureChannelProcessorInsecureChannelProcessor 빈이 HTTP/HTTPS로 리다렉트할 포트를 결정한다.

이 설정은 filter-security-metadata-source에선 유효하지 않다.

이 설정은 filter-security-metadata-source에선 유효하지 않다.

<jee>

필터 체인에 J2eePreAuthenticatedProcessingFilter를 추가해서 컨테이너 인증을 통합한다.

Parent Elements of <jee>
<jee> Attributes

<logout>

필터 스택에 LogoutFilter를 추가한다. SecurityContextLogoutHandler를 함께 설정한다.

Parent Elements of <logout>
<logout> Attributes

<openid-login>

<form-login>과 유사하며, 속성이 동일하다. login-processing-url의 디폴트 값은 “/login/openid”다. OpenIDAuthenticationFilterOpenIDAuthenticationProvider를 등록한다. 후자는 UserDetailsService를 참조해야 한다. 다시 말하지만, user-service-ref 속성으로 id를 지정하거나, 어플리케이션 컨텍스트에서 자동으로 찾을 수 있다.

Parent Elements of <openid-login>
<openid-login> Attributes
Child Elements of <openid-login>

<attribute-exchange>

attribute-exchange 요소는 identity provider로 요청해야 하는 속성 리스트를 정의한다. 예제는 네임스페이스 설정 챕터에 있는 OpenID Support 섹션에서 확인할 수 있다. OpenID 식별자를 매칭할 수 있는 정규식을 identifier-match 속성에 지정하면, 요소를 둘 이상 정의할 수 있다. 이렇게 하면 여러 공급자에서 (구글, 야후 등) 각각 다른 속성 리스트를 가져올 수 있다.

Parent Elements of <attribute-exchange>
<attribute-exchange> Attributes
Child Elements of <attribute-exchange>

<openid-attribute>

OpenID AX Fetch 요청을 만들 때 사용할 속성

Parent Elements of <openid-attribute>
<openid-attribute> Attributes

<port-mappings>

PortMapperImpl 인스턴스는 secure URL과 insecure URL로 리다이렉션하기 위해 디폴트로 설정에 추가된다. 원한다면 이 요소로 클래스가 정의하고 있는 디폴트 매핑을 재정의할 수 있다. 각 하위 <port-mapping> 요소로는 HTTP:HTTPS 포트 쌍을 정의한다. 디폴트 매핑은 80:443과 8080:8443이다. 재정의하는 예제는 Redirect to HTTPS 섹션에서 확인할 수 있다.

Parent Elements of <port-mappings>
Child Elements of <port-mappings>

<port-mapping>

강제로 리다이렉트시킬 때 http 포트를 https 포트로 매핑할 수 있다.

Parent Elements of <port-mapping>
<port-mapping> Attributes

<remember-me>

필터 스택에 RememberMeAuthenticationFilter를 추가한다. 필터엔 TokenBasedRememberMeServices, PersistentTokenBasedRememberMeServices 순으로 설정되며, 혹은 속성에 따라 사용자가 지정한 RememberMeServices 구현체를 설정할 수도 있다.

Parent Elements of <remember-me>
<remember-me> Attributes

<request-cache> Element

ExceptionTranslationFilter에서 AuthenticationEntryPoint를 실행하기 전에, 요청 정보를 저장할 때 사용할 RequestCache 인스턴스를 설정한다.

Parent Elements of <request-cache>
<request-cache> Attributes

<session-management>

세션 관리 기능은 필터 스택에 SessionManagementFilter를 추가하는 것으로 구현한다.

Parent Elements of <session-management>
<session-management> Attributes
Child Elements of <session-management>

<concurrency-control>

동시 세션 제어 기능을 추가하면 사용자의 활성 상태 세션 수를 제한할 수 있다. ConcurrentSessionFilter를 생성하고, SessionManagementFilterConcurrentSessionControlAuthenticationStrategy를 사용한다. form-login 요소를 선언했다면 여기서 생성한 인증 필터에도 전략 객체를 주입한다. 전략에서 사용할 SessionRegistry 인스턴스도 (커스텀 빈을 사용하지 않는다면 SessionRegistryImpl 인스턴스) 함께 생성한다.

Parent Elements of <concurrency-control>
<concurrency-control> Attributes

<x509>

X.509 인증 기능을 추가한다. 필터 스택에 X509AuthenticationFilter를 추가하고, Http403ForbiddenEntryPoint 빈을 생성한다. 후자는 사용 중인 다른 인증 메커니즘이 없을 때만 사용한다 (유일한 기능은 HTTP 403 에러 코드를 반환하는 것이다). UserDetailsService에 사용자 권한 로드를 위임하는 PreAuthenticatedAuthenticationProvider도 생성한다.

Parent Elements of <x509>
<x509> Attributes

<filter-chain-map>

FilterChainMap에 FilterChainProxy 인스턴스를 명시적으로 설정할 때 사용한다.

<filter-chain-map> Attributes
Child Elements of <filter-chain-map>

<filter-chain>

특정 URL 패턴과 해당 패턴에 매칭되는 URL에 적용할 필터 리스트를 정의하는데 사용한다. 여러 필터 체인 요소를 리스트로 모아 FilterChainProxy를 설정할 때는, 가장 구체적인 패턴이 리스트 맨 위에, 가장 일반적인 패턴은 맨 아래에 있어야 한다.

Parent Elements of <filter-chain>
<filter-chain> Attributes

<filter-security-metadata-source>

FilterSecurityInterceptor와 함께 사용할 FilterSecurityMetadataSource 빈을 명시적으로 설정할 때 사용한다. 일반적으로 <http> 요소를 사용하지 않고 FilterChainProxy를 명시적으로 설정할 때만 필요하다. 하위 intercept-url 요소는 pattern, method, access 속성만 사용해야 한다. 그 외는 모두 설정 에러가 발생한다.

<filter-security-metadata-source> Attributes
Child Elements of <filter-security-metadata-source>

22.5.2. WebSocket Security

스프링 시큐리티 4.0+는 메세지 인가 처리를 지원한다. 이 기능을 활용할 수 있는 한 가지 예시는 웹소켓 기반 어플리케이션 인증이다.

<websocket-message-broker>

이 websocket-message-broker 요소는 두 가지 모드가 있다. websocket-message-broker@id를 지정하지 않으면 이 요소는 다음과 같은 일을 한다:

이 것 외에 다른 처리가 필요하다면 id를 명시해서 ChannelSecurityInterceptor를 지정할 수 있다. 그런 다음 스프링의 메세징 인프라와 직접 연결하면 된다. 이 방법은 더 번거롭긴 하지만, 설정을 더 세세하게 제어할 수 있다.

<websocket-message-broker> Attributes
Child Elements of <websocket-message-broker>

<intercept-message>

메세지에 인가 규칙을 정의한다.

Parent Elements of <intercept-message>
<intercept-message> Attributes

22.5.3. Authentication Services

스프링 시큐리티 3.0 이전에는 내부에서 자동으로 AuthenticationManager를 등록했다. 지금은 <authentication-manager> 요소로 직접 하나를 등록해야 한다. 이 요소는 스프링 시큐리티의 ProviderManager 클래스를 생성한다. ProviderManagerAuthenticationProvider 인스턴스를 하나 이상 설정해야 한다. AuthenticationProvider 인스턴스는 네임스페이스가 제공하는 요소로 생성하거나, authentication-provider 요소를 사용해서 표준 빈 정의를 리스트에 추가할 수도 있다.

<authentication-manager>

네임스페이스를 사용하는 스프링 시큐리티 어플리케이션은 반드시 이 요소를 어딘가에 추가해야 한다. 이 요소는 어플리케이션에 인증 서비스를 제공하는 AuthenticationManager를 등록한다. AuthenticationProvider 인스턴스를 생성하는 모든 요소는 이 요소의 자식 요소로 정의해야 한다.

<authentication-manager> Attributes
Child Elements of <authentication-manager>

<authentication-provider>

ref 속성과 함께 사용하지 않는 한, 이 요소는 DaoAuthenticationProvider를 설정하는 약칭으로 사용된다. DaoAuthenticationProviderUserDetailsService에서 사용자 정보를 불러와서 사용자 이름/비밀번호 조합을 로그인할 때 제공한 값과 비교한다. UserDetailsService 인스턴스는 네임스페이스 요소로 정의할 수 있다 (jdbc-user-service 또는 user-service-ref 속성으로 어플리케이션 컨텍스트에 있는 다른 빈을 가리켜서).

Parent Elements of <authentication-provider>
<authentication-provider> Attributes

자체 AuthenticationProvider 구현체를 만들었다면 (또는 어떠한 이유로 스프링 시큐리티가 제공하는 구현체 중 하나를 기존 빈으로 설정하고 싶다면) 아래 문법을 사용해서 내부 ProviderManager 리스트에 추가할 수 있다:

<security:authentication-manager>
<security:authentication-provider ref="myAuthenticationProvider" />
</security:authentication-manager>
<bean id="myAuthenticationProvider" class="com.something.MyAuthenticationProvider"/>
Child Elements of <authentication-provider>

<jdbc-user-service>

JDBC 기반 UserDetailsService를 생성한다.

<jdbc-user-service> Attributes

<password-encoder>

인증 provider는 Password Storage 섹션에서 설명했듯이, 옵션으로 비밀번호 인코더를 설정할 수 있다. 이 요소를 사용하면 빈에 적절한 PasswordEncoder 인스턴스를 주입해 준다.

Parent Elements of <password-encoder>
<password-encoder> Attributes

<user-service>

properties 파일, 또는 자식 요소 “user” 리스트를 사용해서 인메모리 UserDetailsService를 만든다. 사용자 이름은 대소문자 구분 없이 찾을 수 있도록 내부적으로 소문자로 변환한다. 따라서 대소문자를 구분해야 한다면 사용하면 안 된다.

<user-service> Attributes
Child Elements of <user-service>

<user>

어플리케이션의 사용자를 나타낸다.

Parent Elements of <user>
<user> Attributes

22.5.4. Method Security

<global-method-security>

이 요소로 스프링 시큐리티 빈의 메소드를 보호하기 위한 주요 기능을 추가한다. 메소드는 어노테이션으로 보호하거나 (인터페이스나 클래스 레벨에 정의한), 하위 요소에 AspectJ 문법을 사용하는 포인트컷 셋을 정의해서 보호할 수 있다.

<global-method-security> Attributes
Child Elements of <global-method-security>

<after-invocation-provider>

이 요소로는 <global-method-security> 네임스페이스에서 관리하는 보안 인터셉터에서 사용할 AfterInvocationProvider를 장식할 수 있다. global-method-security 요소 안에 이 요소를 0개 이상을 정의할 수 있으며, 각 요소에는 어플리케이션 컨텍스트에 있는 AfterInvocationProvider 빈 인스턴스를 가리키는 ref 속성이 있다.

Parent Elements of <after-invocation-provider>
<after-invocation-provider> Attributes

<pre-post-annotation-handling>

이 요소를 사용하면 스프링 시큐리티의 사전, 사후 실행 어노테이션을 (@PreFilter, @PreAuthorize, @PostFilter, @PostAuthorize) 처리하는 디폴트 표현식 기반 메커니즘을 완전히 대체할 수 있다. 이 어노테이션을 활성화했을 때만 적용된다.

Parent Elements of <pre-post-annotation-handling>
Child Elements of <pre-post-annotation-handling>

<invocation-attribute-factory>

어노테이션을 선언한 메소드에서 사전, 사후 실행 메타데이터를 생성할 때 사용하는 PrePostInvocationAttributeFactory 인스턴스를 정의한다.

Parent Elements of <invocation-attribute-factory>
<invocation-attribute-factory> Attributes

<post-invocation-advice>

<pre-post-annotation-handling> 요소에서 사용할 PostInvocationAuthorizationAdvice를 ref로 지정해서 PostInvocationAdviceProvider를 커스텀한다.

Parent Elements of <post-invocation-advice>
<post-invocation-advice> Attributes

<pre-invocation-advice>

<pre-post-annotation-handling> 요소에서 사용할 PreInvocationAuthorizationAdviceVoter를 ref로 지정해서 PreInvocationAuthorizationAdviceVoter를 커스텀한다.

Parent Elements of <pre-invocation-advice>
<pre-invocation-advice> Attributes

Securing Methods using

@Secured 어노테이션으로 개별 메소드나 클래스에 보안 속성을 정의하는 대신, <protect-pointcut> 요소로 서비스 레이어에 있는 전체 메소드와 인터페이스 셋에 걸친 cross-cutting 보안 제약 조건을 정의할 수 있다. 예제는 네임스페이스 소개 섹션에서 확인할 수 있다.

Parent Elements of <protect-pointcut>
<protect-pointcut> Attributes

<intercept-methods>

빈 정의 안에 이 요소를 사용하면, 해당 빈에 보안 인터셉터를 추가하고 메소드의 접근 설정 속성을 지정할 수 있다.

<intercept-methods> Attributes
Child Elements of <intercept-methods>

<method-security-metadata-source>

MethodSecurityMetadataSource 인스턴스를 생성한다.

<method-security-metadata-source> Attributes
Child Elements of <method-security-metadata-source>

<protect>

보호할 메소드와, 이 메소드에 적용할 접근 제어 설정 속성을 정의한다. “protect” 선언을 “global-method-security”가 제공하는 서비스와 함께 쓰지 않기를 강력히 권고한다.

Parent Elements of <protect>
<protect> Attributes

22.5.5. LDAP Namespace Options

LDAP은 전용 챕터에서 자세히 다룬다. 여기선 어떻게 네임스페이스 옵션이 스프링 빈에 매핑되는지를 보충 설명한다. LDAP 구현체는 스프링 LDAP을 광범위하게 사용하므로 스프링 LDAP 프로젝트 API에 익숙하면 좀 더 수월할 거다.

Defining the LDAP Server using the

<ldap-server>

이 요소에는 다른 LDAP 빈에서 사용할 스프링 LDAP ContextSource를 설정한다. 이 인터페이스는 LDAP 서버의 위치와 커넥션을 위한 기타 정보를 (익명 접근을 허용하지 않는 경우 사용자 이름과 비밀번호) 정의한다. 테스트용 임베디드 서버를 만드는 데도 사용할 수 있다. 각 옵션에서 사용하는 문법은 LDAP 챕터에서 자세히 다룬다. 실제 ContextSource 구현체는 스프링 LDAP의 LdapContextSource 클래스를 상속한 DefaultSpringSecurityContextSource다. manager-dn, manager-password 속성은 각각 DefaultSpringSecurityContextSourceuserDn, password 프로퍼티에 매핑된다.

어플리케이션 컨텍스트에 정의한 서버가 하나 뿐일 땐 네임스페이스에서 정의한 다른 LDAP 빈에서 이 LDAP 서버 정보를 자동으로 사용한다. 아니면 요소에 “id” 속성을 부여하면 다른 네임스페이스 빈에서 server-ref 속성으로 이 요소를 참조할 수 있다. 다른 전통적인 스프링 빈에서 서버 정보를 사용하려는 경우 실제로는 ContextSource 인스턴스의 빈 id를 지정한다.

<ldap-server> Attributes

<ldap-authentication-provider>

이 요소는 LdapAuthenticationProvider 인스턴스를 생성하는 약칭이다. 이 요소는 디폴트로 BindAuthenticator 인스턴스와 DefaultAuthoritiesPopulator로 설정된다. 모든 네임스페이스 인증 provider와 마찬가지로, authentication-manager 요소의 자식으로 추가해야 한다.

Parent Elements of <ldap-authentication-provider>
<ldap-authentication-provider> Attributes
Child Elements of <ldap-authentication-provider>

<password-compare>

<ldap-provider> 하위에 이 요소를 사용하면 BindAuthenticator에서 PasswordComparisonAuthenticator로 인증 전략을 전환한다.

Parent Elements of <password-compare>
<password-compare> Attributes
Child Elements of <password-compare>

<ldap-user-service>

LDAP UserDetailsService를 설정하는 요소다. FilterBasedLdapUserSearchDefaultLdapAuthoritiesPopulator를 조합한 LdapUserDetailsService 클래스를 사용한다. 이 클래스가 지원하는 속성은 <ldap-provider>와 동일하게 사용할 수 있다.

<ldap-user-service> Attributes

Next :
Spring Security Dependencies
스프링 시큐리티가 의존하는 라이브러리를 설명합니다. 공식 문서에 있는 "Spring Security Dependencies" 챕터를 한글로 번역한 문서입니다.

전체 목차는 여기에 있습니다.

<< >>

TOP