데이터베이스 인증을 위한 JAAS 사용자 정의 로그인 모듈 개발
데이터베이스에 인증하기 위해 사용자 이름 및 비밀번호를 추가하는 데 필요한 JAAS(Java™ Authentication and Authorization Service) 사용자 정의 로그인 모듈을 개발할 수 있습니다.
이 태스크 정보
인증이 필요한 데이터베이스 연결이 작성될 때 호출할 수 있는 JAAS 사용자 정의 로그인 모듈을 개발할 수 있습니다. JAAS 사용자 정의 로그인 모듈은 사용자 이름, 비밀번호 및 관리 대상 연결 팩토리가 포함된 비밀번호 신임 정보의 작성을 담당합니다. 이 로그인 모듈은 데이터베이스에 인증하기 위해 사용할 주제의 개인용 신임 정보 세트에 비밀번호 신임 정보를 추가해야 합니다.
프로시저
- javax.security.auth.spi.LoginModule 인터페이스를 구현하는 클래스를 작성하십시오.
- initialize 메소드에서 필요한 필드를 저장하십시오. 예를 들어 다음과 같습니다.
/** {@inheritDoc} */ @SuppressWarnings("unchecked") @Override public void initialize(Subject subject, CallbackHandler callbackHandler, Map<String, ?> sharedState, Map<String, ?> options) { this.callbackHandler = callbackHandler; this.subject = subject; this.sharedState = (Map<String, Object>) sharedState; this.options = options; }
- login 메소드에서 WSManagedConnectionFactoryCallback 및
WSMappingPropertiesCallback 콜백을 처리하십시오. 예를 들어 다음과 같습니다.
/** {@inheritDoc} */ @Override public boolean login() throws LoginException { ... Callback callbacks[] = new Callback[2]; callbacks[0] = new WSManagedConnectionFactoryCallback("Target ManagedConnectionFactory: "); callbacks[1] = new WSMappingPropertiesCallback("Mapping Properties (HashMap): "); callbackHandler.handle(callbacks);
- login 메소드에서 관리 대상 연결 팩토리 및 특성을 얻으십시오. 예를 들어 다음과 같습니다.
// The method getManagedConnectionFactory must be used as shown for compatibility with WebSphere traditional ManagedConnectionFactory managedConnectionFactory = ((WSManagedConnectionFactoryCallback) callbacks[0]).getManagedConnectionFacotry(); Map properties = ((WSMappingPropertiesCallback) callbacks[1]).getProperties();
- 인증 데이터 별명 또는 일부 기타 기준에 따라 사용자 이름 및 비밀번호를 얻으십시오. 예를 들어 다음과 같습니다.
String alias = (String) properties.get(com.ibm.wsspi.security.auth.callback.Constants.MAPPING_ALIAS); String user = getUser(alias); // Implementation specific char[] password = getPassword(alias); // Implementation specific
- 해당 사용자 이름 및 비밀번호를 사용하여 javax.resources.spi.PasswordCredential
오브젝트를 작성하고 관리 대상 연결 팩토리를 설정하십시오. 예를 들어 다음과 같습니다.
javax.resource.spi.security.PasswordCredential passwordCredential = new PasswordCredential(user, password); passwordCredential.setManagedConnectionFactory(managedConnectionFactory);
- commit 메소드에서 주제에 비밀번호 신임 정보를 추가하십시오. 예를 들어 다음과 같습니다.
/** {@inheritDoc} */ @Override public boolean commit() throws LoginException { // Verify that the login was successful before adding the PasswordCredential to the subject. subject.getPrivateCredentials().add(passwordCredential); return true; }
상위 주제: Liberty 보안 인프라에 대한 확장기능 개발
관련 태스크:


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_dev_jaas_custom_login_module
파일 이름: twlp_dev_jaas_custom_login_module.html