'Securing Web Application'에 해당되는 글 3

  1. 2009.08.07 Tomcat 인증
  2. 2009.06.10 JPetStore 분석 1 - iBatis
  3. 2009.04.18 웹 어플리케이션 인증

Tomcat 인증

- web.xml

- tomcat-users.xml
로그인 실패하면 401 에러가 남.

- 결과
//인증을 받지 않은 경우
request.getRemoteUser() : null
request.getUserPrincipal() : null
principal.getName() : null

//role1이라는 사용자로 인증을 받은 경우
request.getRemoteUser() : role1
request.getUserPrincipal() : <user username="role1" password="tomcat" roles="role1"/>
principal.getName() : role1
request.isUserInRole(tomcat) : false
request.isUserInRole(role1) : true

//both라는 사용자로 인증을 받은 경우
request.getRemoteUser() : both
request.getUserPrincipal() : <user username="both" password="tomcat" roles="tomcat,role1"/>
principal.getName() : both //조금 이상하다.
request.isUserInRole(tomcat) : true
request.isUserInRole(role1) : true

//tomcat이라는 사용자는 role1이라는 권한이 없어서 거부된다.

- 참고
웹 어플리케이션 인증

JPetStore 분석 1 - iBatis

- JPetStore 5.0 Example Application
Struts 1.2, beanaction.jar(23,198  bytes)
iBatis 2

- web.xml
  • *.shtml 는 Struts action에서 처리하도록 함.
  • security-constraint 로 jsp파일을 직접 호출하지 못하게 함.

- /shop/index.shtml
org.apache.struts.beanaction.BeanAction
name=catalogBean
parameter="*"
/catalog/Main.jsp
- /shop/viewCategory.shtml?categoryId=FISH
org.apache.struts.beanaction.BeanAction
name=catalogBean
catalogBean#viewCategory() //비지니스 메서드 호출
/catalog/Category.jsp - BeanAction에서는 parameter 설정이 있으면 name의 해당 메서드 호출
parameter 설정이 없으면 path 에서 마지막 경로에 해당하는 메서드 호출
단, parameter가 *이면 어떤 메서드도 호출 안됨.

- 아래와 같이 특정 확장자에 대한 매핑이 가능

웹 어플리케이션 인증

todo=login.jsp 소스

- Securing a Web Application in NetBeans IDE 6.5
Tomcat, GlassFish(Sun Java System Application Server)에서 BASIC, FORM 인증걸기

위 튜터리얼을 따라 해도 안되는데 원인은 tomcat-users.xml의 위치가 문제였다.
CATALINA_HOME/conf/tomcat-users.xml이 아니라 C:\Documents and Settings\USER\.netbeans\6.5\apache-tomcat-6.0.18_base\conf\tomcat-users.xml을 수정해야 한다.
그리고 rolename은 대소문자를 구별한다.