12.07.2015 Views

4.3.1.Action의 역할 - Anyframe

4.3.1.Action의 역할 - Anyframe

4.3.1.Action의 역할 - Anyframe

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

13.Authentication and Authorization요청을 보낸 클라이언트가 등록된 사용자인지 체크하여 로그인하게 해주는 Authentication과 사용자와어플리케이션 내의 자원 간의 관계 정보를 기반으로 접근 권한을 관리하는 Authorization은 어플리케이션 개발 시 항상 고려되어야 하는 부분 중의 하나이며 두 부분이 밀접히 관련되어 있다. 인증과 권한 기능을 어플리케이션에 추가하려면 몇 가지 고려해야 할 것이 있다.• 사용자 정보는 어떤 방법(DB, LDAP, FILE, NT … )을 이용해 관리할 것인지 ...• 인증된 사용자 정보를 어떻게 (Session, Cookie… ) 저장할 것인지 ...• 사용자에게 권한을 부여하는 방법과 접근을 통제할 자원은 어떤 것인지 ...JAAS 기반의 인증 방식을 적용하여 Login Context를 추상화함으로써 Login Module 개발 시 어플리케이션 코드의 수정 없이 타 시스템을 통한 인증을 수행할 수 있도록 처리하는 것이 가장 바람직하며, 프로젝트별 인증 처리 요건(ex. 외부 인증 솔루션 적용)에 맞게 작성해야 한다. 인증과 권한 관리 기능은 모든 어플리케이션에서 그대로 재사용할 수 있는 것은 아니다. 각 어플리케이션마다 정책이 다를 수 있으므로 커스터마이징이 필요하기 때문이다. 여기에서는 <strong>Anyframe</strong> 의 Struts 기반 개발시 인증과 권한관리 방법에 대해 살펴보기로 한다.13.1.Authentication여기서는 일반적으로 많이 쓰이는 인증 방법인 DB에 저장된 사용자 정보를 기반으로, 인증을 수행하는 예에 대해 알아본다.1. <strong>Anyframe</strong> 기반에서 인증 수행을 위한 서비스 개발. 이때, 해당 서비스에서는 인증된 사용자 정보를담은 javax.security.auth.Subject 객체 전달2. 로그인 수행을 위한 Action 코드에서 User ID, Password를 기반으로 해당 서비스를 호출하여 유효성 검증3. 인증된 사용자 정보를 담고 있는 Subject 객체 내에 사용자가 속한 그룹(Role)의 정보를 TypedPrincipal형태로 저장4. Subject 객체를 'subject'라는 key값으로 Session에 저장5. 이 후 Session에 저장된 Subject 객체를 이용하여 권한 관리 수행13.1.1.Samples다음은 DB 기반의 사용자 인증 처리를 수행하는 서비스 DBAuthenticationServiceImpl.java 의 일부분이다.public class DBAuthenticationServiceImpl implements AuthenticationService {// 중략 ...public Subject authenticate(anyframe.sample.struts.services.UserVO userVO)throws Exception {Subject subject = null;ResultSet rsu = null;PreparedStatement pstmt = null;Connection conn = null;String userId = userVO.getUserId();String password = userVO.getPassword();59

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!