4. Channel Security
jsessionid를 오직 안전한 채널을 통해서만 전송할 수 있는 HTTPS를 사용하기 위해서는 필터들의 가장 상위에 있었던 ChannelProcessingFilter를 사용하면 됩니다.
web.xml에 FilterToBeanProxy 사용해서 등록한 뒤에 애플리케이션 컨텍스트에 다음과 같이 등록합니다.
<property name="channelDecisionManager"><ref bean="channelDecisionManager"/></property>
<property name="filterInvocationDefinitionSource">
<value>
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
\A/secure/.*\Z=REQUIRES_SECURE_CHANNEL
\A/acegilogin.jsp.*\Z=REQUIRES_SECURE_CHANNEL
\A/j_acegi_security_check.*\Z=REQUIRES_SECURE_CHANNEL
\A.*\Z=REQUIRES_INSECURE_CHANNEL
</value>
</property>
</bean>
<bean id="channelDecisionManager" class="org.acegisecurity.securechannel.ChannelDecisionManagerImpl">
<property name="channelProcessors">
<list>
<ref bean="secureChannelProcessor"/>
<ref bean="insecureChannelProcessor"/>
</list>
</property>
</bean>
<bean id="secureChannelProcessor" class="org.acegisecurity.securechannel.SecureChannelProcessor"/>
<bean id="insecureChannelProcessor" class="org.acegisecurity.securechannel.InsecureChannelProcessor"/>
이런 이런... 이러니까 'XML 지옥'이라는 말이 나오면서 XML을 기피하게 되는 것 같습니다. 저 중에서 거~의 대부분의 상황에서 기본으로 .. 그냥 저렇게만 붙여 넣어서 사용하면 되는 부분을 빼면 색칠한 부분이 됩니다. Spring Security 2.0에서 태그 한방으로 모두 처리가 되리라 예상해 봅니다.
그림으로 그려보면 다음과 같은 관계에 있습니다.
헥헥헥;;;