Tagged

Acegi

A collection of 13 posts

Acegi

Acegi로 웹 애플리케이션 보안하기 6

6. 예외 다루는 필터 등록하기 org.acegisecurity.ui.ExceptionTranslationFilter 를 등록해 줍니다. 그리고 이 필터에 authenticationEntryPoint 속성과 accessDeniedHandleerImpl 속성을 설정해 줍니다. authenticationEntryPoint 는 인증 예외가 발생했을 때 인증을 요구하는 페이지로 이동하도록 설정했으며, accessDeniedHandleerImpl 는 해당 사용자가 권한이 없을 요청을 했을 때 보여질 페이지를 설정했습니다. 7. 로그아웃 필터 등록하기 이 필터는

Acegi

Acegi로 웹 애플리케이션 보안하기 5

5. HttpSessionIntegrationFilter 사용하기 앞에서 인증과 보안에 관련된 필터과 bean들을 모두 등록했지만, 애플리케이션은 동작하지 않습니다. 그 이유는 보안 정보가 여러 요청들 간에 유지되지 않기 때문입니다. 이 문제를 해결하기 위해 보안 정보를 Session에서 관리하는 필터를 등록해 줍니다.     <bean id=”httpSessionContextIntegrationFilter”        class=”org.

Acegi

Acegi로 웹 애플리케이션 보안하기 3

3. 인증하자.(보안된 정보에 접근할 때 로그인을 하도록…) 이제부터 이전 글에서 등록한 FilterChainPorxy에 필터를 하나씩 등록하면 됩니다. 그러려면 일단 필터를 bean으로 등록해야겠죠. 그리고 그 필터가 종속성을 가지는 객체들도 역시 bean으로 등록하면 됩니다. 인증을 하기 위해 Acegi에서 제공하고 있는 필터는 AuthenticationProcessingFilter입니다.이 필터는 authenticationManager를 사용하여 인증 처리를 하고 있습니다. 동작하는

Acegi

Acegi로 웹 애플리케이션 보안하기 2

2. acegi 컨텍스트 파일 작성하고, 스프링 컨텍스트 리스너 등록하기. 일반적인 스프링 컨텍스트 파일을 작성합니다. Acegi 관련 bean 설정을 따로 모아두는 것이 관리에 용이할 것입니다. 따라서 새로운 파일을 작성합니다. 그리고 web.xml에서 참조할 FilterChainProxy bean을 위에서 생성한 파일에 등록합니다.     <bean id=”filterChainProxy”       

Acegi

Acegi로 웹 애플리케이션 보안하기 1

1. web.xml에 필터 등록하기FilterToBeanProxy를 Acegi Filter Chain Proxy로 등록합니다. FilterToBeanProxy는 스프링 애플리케이션 컨텍스트에 위치한 bean을 참조할 수 있도록 만들어둔 클래스입니다. 이녀석이 없었다면 일일히 모든 Filter에서 다음과 같은 코드를 삽입하여, Spring에 종속적인 코드를 만들어 가면서까지, 스프링 애플리케이션 컨텍스트에 위치한 bean을 필터에서 사용했을 것입니다. ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);Bar bar

Acegi

Acegi 필터 등록할 때 발생할 수 있는 몹쓸 버그

참조 : NoSuchBeanDefinitionException: No bean named ” is defined 위와 같이 필터 체인 프록시에서 필터를 등록할 때 보기 좋게 하려고 줄을 맞춰 주면 안 됩니다. 이렇게 하면 다음과 같은 에러 메시지를 보시게 될 것입니다.(항상 발생하는 버그는 아닙니다. 어떤 경우에는 줄바꿈을 하더라도 에러가 발생하지 않았습니다.)해결책은?? 그냥 필터들의 이름을 쭈욱~ 이어줍니다.

Access Decision Manager

Access Decision Manager

AccessDecisionManager 인터페이스를 사용하여 보안이 필요한 자원에 접근하는 사용자가 접근 권한이 있는지 확인합니다. AccessDecisionManager는 여러개의 AccessDecisionVoter 에게 실제 권한 확인 역할을 위임하며, 그 결과를 가지고 자원의 공개 여부를 결정합니다. Acegi는 AccessDecisionManager의 구현체로 여러 Voter들의 투표 결과를 가지고 판단하는 방법에 따라 세 개의 클래스를 제공합니다. AffirmativeBased(Voter들 중에 하나라도 허락 하면 공개)

Acegi

Acegi 사용시 사용자 정보 접근하기

Acegi를 사용하여 인증을 거치면, 사용자 아이디(principal)가 session에 ACEGI_SECURITY_LAST_USERNAME 라는 속성으로 저장됩니다. 따라서, 뷰에서는 EL을 사용하여 ${ACEGI_SECURITY_LAST_USERNAME} 이런식으로 접근할 수 있으며, 컨트롤러 계층에서는 String loginId = (String) request.getSession().getAttribute(“ACEGI_SECURITY_LAST_USERNAME”); 이런식으로 접근할 수 있습니다. HttpServletRequest 변수에 직접 전근할

Acegi

Acegi Security in one hour

시기적절하게 좋은 글 하나가 올라왔네요.Acegi Security in one hour Spring 2, Acegi, Sitemesh를 사용한 예제를 코드 중심으로 설명한 아티클입니다. 자세하기 보진 않았지만, 빠르게 Acegi를 사용해 보고 싶으신 분들에게 매우 유용할 듯 싶습니다. 제목은 한 시간이지만, 영어권이 아니기 때문에 한 두 시간정도가 되지 않을까 싶네요.ㅎㅎ

Acegi

Spring Security 설정 분류 및 커스터마이징

현재 1.0.5까지 나온 Acegi(Spring Security)의 설정은 매~~~우 깁니다. 하지만 대부분이 비슷한 설정을 사용하실 것이기 때문에 필요한 필터에 대한 설정을 복사해서 붙여넣고 일부분만 변경하여 사용하시면 됩니다. 문제는 설정이 매~~~우 길기 때문에 어지럽다는 것입니다. ‘XML 지옥’이 이런 것이구나 하는 것을 Spring 공부하고 나서

Acegi

Authentication Manager

Spring Security를 구성하는 다섯 가지 컴포넌트 중에 하나인 Authentication Manager는 인증을 담당하고 있습니다. Authentication Manager는 인증을 시도(authenticate 메소드 호출)해서 성공하면, Authentication 객체를 반환하고, 실패하면, AuthenticationException 예외를 던지는 메소드를 가지고 있습니다. 이 인터페이스의 구현체로 Provider Manager를 제공하고 있으며, 이 클래스를 여러 인증 방식을 사용할 수 있는 관리자 역할을 하고

Acegi

Spring Acegi Tutorial

참조 :  Spring Acegi Tutorial Spring Security(Acegi Security)에 대한 맛보기용 아티클로 매우 적당한 것 같습니다. 먼저 Acegi에서 흔히 사용하는 용어에 대해 설명을 하고, 간단한 애플리케이션을 통해 실제 Acegi를 적용하여 구동하고 있는 녀석을 살펴본 뒤에, 해당 샘플에서 사용한 필터들과 각각의 필터들의 종속성을 살펴보고 있습니다. 개인적으로는 이러한 구성이 어렵고 생소한