Acegi

A collection of 13 posts

Acegi

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

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

Acegi

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

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

Acegi

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

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

Acegi

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

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

Acegi

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

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

Acegi

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

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

Access Decision Manager

Access Decision Manager

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

Acegi

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

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

Acegi

Authentication Manager

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

You've successfully subscribed to Whiteship!
Could not sign up! Invalid sign up link.