2011-01-11 13 views
6

EJB의 키 스토어에 비밀번호를 제공해야하지만 개발자가 볼 수 없도록하고 싶습니다. 내 아이디어는 Websphere Console에서 인증 별명을 작성한 다음 나중에 MY_ALIAS를 찾아 별명에서 암호를 얻는 것입니다. 주제와 관련된 토론을 찾았습니다. http://www.coderanch.com/t/79439/Websphere/Authentication-DataWebsphere 6.1에 배포 된 EJB에서 인증 별명에 액세스하는 방법

누구나 별칭을 조회 할 수 있습니까? 목표를 달성하기 위해 제안 된 방법은 무엇입니까?

대단히 감사합니다!

답변

6

당신은 J2C 인증 데이터 항목에서 자격 증명을 얻기 위해 다음 코드를 사용할 수 있습니다

import com.ibm.wsspi.security.auth.callback.Constants; 
import com.ibm.wsspi.security.auth.callback.WSMappingCallbackHandlerFactory; 
import javax.resource.spi.security.PasswordCredential; 
import javax.security.auth.Subject; 
import javax.security.auth.callback.CallbackHandler; 
import javax.security.auth.login.LoginContext; 

Map map = new HashMap(); 
map.put(Constants.MAPPING_ALIAS, "YOUR_J2C_DATA_ALIAS"); 
CallbackHandler callbackHandler = WSMappingCallbackHandlerFactory.getInstance().getCallbackHandler(map, null); 

LoginContext loginContext = new LoginContext("DefaultPrincipalMapping", callbackHandler); 
loginContext.login(); 

Subject subject = loginContext.getSubject(); 
Set credentials = subject.getPrivateCredentials(); 

PasswordCredential passwordCredential = (PasswordCredential) credentials.iterator().next(); 

String user = passwordCredential.getUserName(); 
String password = new String(passwordCredential.getPassword()); 
+0

이것은 마치 마법처럼 일했다! – Jay

+0

Websphere 특정 클래스 ('Constants' 및'WSMappingCallbackHandlerFactory')를 참조하지 않고이 작업을 수행 할 수있는 방법이 있는지 궁금합니다. – FGreg

+0

@FGreg 가능하다고 생각하지 않습니다. 그것은 특정의 클래스를 사용하는 것을 전제로해야하기 때문에 WAS에 특정한 것입니다. BTW, 이들은 공용 WAS API의 일부입니다. 그것을 사용하는 데 문제가 있습니까? – fnt

관련 문제