스택된 JAAS 로그인 모듈을 사용하여 동적 UsernameToken 토큰 생성
GenericSecurityTokenFactory API를 사용하여 WS-Security 런타임에 사용할 완전히 채워진 UsernameToken 보안 토큰 또는 단순한 UsernameToken 보안 토큰을 작성할 수 있습니다. 이러한 보안 토큰은 WSSAPI, JAAS 로그인 모듈 또는 UNTGenerateLoginModule 등에 사용할 수 있습니다.
이 태스크 정보
GenericSecurityTokenFactory는 GenericIssuedTokenGenerateLoginModule을 사용하여 생성할 수 있는 UsernameToken을 작성하는 데 사용할 수 있는 여러 API를 제공합니다.
다음과 같이 두 가지 유형의 UsernameToken이 있습니다.
- 전체 UsernameToken
- 전체 UsernameToken은 XML을 포함하며 GenericSecurityTokenFactory 로그인 모듈과 함께 생성될 수 있습니다.
- 단순 UsernameToken
- 단순 UsernameToken은 사용자 이름 및 비밀번호만 포함하며 XML을 포함하지 않습니다. 단순 UsernameToken은 UNTGenerateLoginModule, LTPAGenerateLoginModule 및 KRBGenerateLoginModule이 사용할 수 있는 동적 사용자 이름 및 비밀번호를 설정하는 데 사용됩니다.
GenericSecurityTokenFactory API를 사용하여 전체 UsernameToken을 작성하면 이 토큰은 WS-Security 런타임에서 생성될 수 있는 완전한 양식의 보안 토큰입니다. 작성할 토큰 유형을 판별한 다음 다음 단계 중 하나에 지정된 명령과 비슷한 명령을 발행하여 토큰을 작성하십시오. 토큰이 작성된 후에는 이 토큰에 있는 사용자 이름 및 비밀번호를 모니터할 수 없습니다.
GenericSecurityTokenFactory API를 사용하여 단순 UsernameToken을 작성하면 이 토큰은 사용자 이름만 포함하며 선택적으로 비밀번호를 포함합니다. 단순 UsernameToken은 XML을 포함하지 않기 때문에 GenericIssuedTokenGenerateLoginModule을 사용하여 생성할 수 없습니다.
프로시저
- UsernameToken을 작성하십시오. 다음 UsernameToken 유형 중 하나를 작성할 수 있습니다.
- 사용자 이름 및 비밀번호를 포함하는 전체 UsernameToken
- 사용자 이름 및 시간소인은 포함하지만 비밀번호는 포함하지 않는 전체 UsernameToken
- 사용자 이름 및 비밀번호를 포함하는 단순 UsernameToken
- 사용자 이름 및 비밀번호를 포함하는 전체 UsernameToken을 작성하십시오.
import com.ibm.websphere.wssecurity.wssapi.token.GenericSecurityTokenFactory; import com.ibm.websphere.wssecurity.wssapi.token.UsernameToken; ... GenericSecurityTokenFactory gstFactory = GenericSecurityTokenFactory.getInstance(); UsernameToken myUnt = gstFactory.getFullUsernameToken("myUsername", "myPassword".toCharArray());
- 사용자 이름 및 시간소인은 포함하지만 비밀번호는 포함하지 않는 전체 UsernameToken을 작성하십시오.
import com.ibm.websphere.wssecurity.wssapi.token.GenericSecurityTokenFactory; import com.ibm.websphere.wssecurity.wssapi.token.UsernameToken; ... GenericSecurityTokenFactory gstFactory = GenericSecurityTokenFactory.getInstance(); UsernameToken myUnt = gstFactory.getFullUsernameToken("myUsername", null, true);
- 사용자 이름 및 비밀번호를 포함하는 단순 UsernameToken을 작성하십시오.
import com.ibm.websphere.wssecurity.wssapi.token.GenericSecurityTokenFactory; import com.ibm.websphere.wssecurity.wssapi.token.UsernameToken; ... GenericSecurityTokenFactory gstFactory = GenericSecurityTokenFactory.getInstance(); UsernameToken myUnt = gstFactory.getSimpleUsernameToken("myUsername", "myPassword".toCharArray());
- JAAS 로그인 모듈을 작성하십시오. 이전 단계에서 전체 UsernameToken을 작성한 경우 전체 UsernameToken을 생성하려면
GenericIssuedTokenGenerateLoginModule 위에 스택될 수 있는 JAAS로그인 모듈을 작성해야 합니다. 이전 단계에서 단순 UsernameToken을 작성한 경우 동적 UsernameToken을 생성하려면 UNTGenerateLoginModule 위에 스택될 수 있는 JAAS 로그인 모듈을 작성해야 합니다.
- 전체 UsernameToken을 생성하려면 GenericIssuedTokenGenerateLoginModule 위에 스택될 수 있는 JAAS 로그인 모듈을 작성하십시오. 다음 예는 버전 8.5.0.2 이상을 사용하는 경우에 적용됩니다.
package test.tokens; import java.util.HashMap; import java.util.Map; import javax.security.auth.Subject; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.login.LoginException; import javax.security.auth.spi.LoginModule; import com.ibm.websphere.wssecurity.wssapi.token.UsernameToken; import com.ibm.websphere.wssecurity.wssapi.token.GenericSecurityTokenFactory; import com.ibm.websphere.wssecurity.wssapi.WSSUtilFactory; import com.ibm.wsspi.wssecurity.core.config.CallbackHandlerConfig; import java.util.ArrayList; public class MyFullUntGenerator implements LoginModule { private Map _sharedState; private Map _options; private CallbackHandler _handler; public void initialize(Subject subject, CallbackHandler callbackHandler, Map<String, ?> sharedState, Map<String, ?> options) { this._handler = callbackHandler; this._sharedState = sharedState; this._options = options; } public boolean login() throws LoginException { //For the sake of readability, this login module does not //protect against all NPE's GenericSecurityTokenFactory factory = null; try { factory = GenericSecurityTokenFactory.getInstance(); } catch (Exception e) { throw new LoginException(e.toString()); } if (factory == null) { throw new LoginException("GenericSecurityTokenFactory.getInstance() returned null"); } //The userid and password can be obtained however you want // (Optional) Obtain the username and password configured in the callback handler Map wssContext = getWSSContext(_handler); CallbackHandlerConfig chc = (CallbackHandlerConfig) wssContext.get(CallbackHandlerConfig.CONFIG_KEY); String username = chc.getUserId(); char[] password = chc.getUserPassword(); UsernameToken unt = factory.getFullUsernameToken("myUsername", "myPassword".toCharArray()); //Put the token in a list on the shared state where it will be available to be used by //stacked login modules factory.putGeneratorTokenToSharedState(_sharedState, unt); return true; } //implement the rest of the methods required by the //LoginModule interface }
- 동적 UsernameToken을 생성하려면 UNTGenerateLoginModule 위에 스택될 수 있는 JAAS 로그인 모듈을 작성하십시오.
package test.tokens; import java.util.HashMap; import java.util.Map; import javax.security.auth.Subject; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.login.LoginException; import javax.security.auth.spi.LoginModule; import com.ibm.websphere.wssecurity.wssapi.token.UsernameToken; import com.ibm.websphere.wssecurity.wssapi.token.GenericSecurityTokenFactory; import com.ibm.websphere.wssecurity.wssapi.WSSUtilFactory; import com.ibm.wsspi.wssecurity.core.config.CallbackHandlerConfig; import java.util.ArrayList; public class MySimpleUntGenerator implements LoginModule { private Map _sharedState; private Map _options; private CallbackHandler _handler; public void initialize(Subject subject, CallbackHandler callbackHandler, Map<String, ?> sharedState, Map<String, ?> options) { this._handler = callbackHandler; this._sharedState = sharedState; this._options = options; } public boolean login() throws LoginException { //For the sake of readability, this login module does not //protect against all NPE's GenericSecurityTokenFactory factory = null; try { factory = GenericSecurityTokenFactory.getInstance(); } catch (Exception e) { throw new LoginException(e.toString()); } if (factory == null) { throw new LoginException("GenericSecurityTokenFactory.getInstance() returned null"); } //The userid and password can be obtained however you want // (Optional) Obtain the username and password configured in the callback handler Map wssContext = getWSSContext(_handler); CallbackHandlerConfig chc = (CallbackHandlerConfig) wssContext.get(CallbackHandlerConfig.CONFIG_KEY); String username = chc.getUserId(); char[] password = chc.getUserPassword(); UsernameToken unt = factory.getSimpleUsernameToken("myUsername", "myPassword".toCharArray()); //Put the token in a list on the shared state where it will be available to be used by //stacked login modules factory.putGeneratorTokenToSharedState(_sharedState, unt); return true; } //implement the rest of the methods required by the //LoginModule interface }
- 전체 UsernameToken을 생성하려면 GenericIssuedTokenGenerateLoginModule 위에 스택될 수 있는 JAAS 로그인 모듈을 작성하십시오.
- JAAS 로그인 구성을 작성하십시오.
- 이전 단계에서 작성한 사용자 정의 로그인 모듈의 전체 클래스 이름을 기록하십시오. 예를 들면, test.tokens.MyFullUntGenerator입니다.
- 스택하고 있는 로그인 모듈의 전체 클래스 이름을 기록하십시오. 예를 들면, com.ibm.ws.wssecurity.wssapi.token.impl.UNTGenerateLoginModule 또는 com.ibm.ws.wssecurity.wssapi.token.impl.GenericIssuedTokenGenerateLoginModule입니다.
- 관리 콘솔에서 보안 > 글로벌 보안으로 이동하십시오.
- 인증 아래에서 JAAS(Java Authentication and Authorization Service) > 시스템 로그인으로 이동하십시오.
- 새로 작성을 클릭하고 별명에 test.generate.unt를 입력하십시오.
- JAAS 로그인 모듈에서 새로 작성을 클릭하고 모듈 클래스 이름에 사용자 정의 로그인 모듈의 이름을 입력하십시오. 로그인 모듈 프록시 사용을 선택하고 확인을 클릭하십시오.
- 새로 작성을 클릭하고 모듈 클래스 이름에 스택 중인 로그인 모듈의 이름을 입력하십시오. 확인을 클릭하십시오.
- 새 JAAS 로그인 구성을 사용하도록 UsernameToken 토큰 생성기를 구성하십시오.
- 관리 콘솔에서 변경하려는 바인딩 구성을 여십시오.
- WS-Security > 인증 및 보호를 선택하십시오.
- 인증 토큰에서 변경할 아웃바운드 UsernameToken을 선택하십시오.
- JAAS 로그인에서 test.generate.unt를 선택하십시오.
- 옵션: GenericIssuedTokenGenerateLoginModule을 사용하는 경우 passThroughToken=true 사용자 정의 특성을 추가하십시오.
- 콜백 핸들러를 클릭하십시오.
- passThroughToken=true 사용자 정의 특성을 추가하십시오.
- 확인을 클릭하십시오.
- 저장을 클릭하십시오.
- 애플리케이션 서버를 다시 시작하여 JAAS 구성 변경사항을 적용하십시오.
- 서비스를 테스트하십시오.


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