레지스트리 상호 작용 없이 UsernameToken 호출자 구성 구성

WebSphere® 레지스트리에 액세스하지 않고 호출자 구성으로 UsernameToken을 인증하려면 UsernameToken 이용자의 인증 메소드를 대체하고 대체 JAAS 로그인 구성을 사용하도록 호출자를 구성할 수 있습니다.

이 태스크 정보

이 정보는 JAX-WS(Java API for XML Web Services)에만 적용됩니다.

기본적으로, JAX-WS Web Services Security UsernameToken 이용자, UNTConsumeLoginModule은 항상 WebSphere 레지스트리에 대해 토큰 내에 포함되는 사용자 이름 및 비밀번호를 유효성 검증합니다. GenericSecurityTokenFactory가 이 인증 메소드를 사용자 소유의 인증 메소드로 대체하기 위해 제공하는 SPI를 사용할 수 있습니다. 자세한 정보는 쌓인 JAAS 로그인 모듈을 사용하여 UsernameToken 이용자의 인증 메소드 대체를 참조하십시오.

호출자 구성이 서비스 제공자의 WS-Security 제한조건에 추가되면, UsernameToken에 포함된 사용자 이름 및 비밀번호는 또한 WebSphere 레지스트리를 기준으로 유효성 검증됩니다. 사용자 이름 및 비밀번호가 제공되면 사용자 이름 및 비밀번호 둘 모두가 WebSphere 레지스트리에 대해 유효성 검증됩니다. 사용자 이름만이 제공되면 사용자 이름은 WebSphere 레지스트리에 존재해야 합니다. 이러한 유효성 검증은 다음 예에 표시된 대로 wss.caller JAAS(Java™ Authentication and Authorization Service) 구성 스택의 일부인 com.ibm.ws.security.server.lm.ltpaLoginModule에서 발생합니다.

com.ibm.ws.wssecurity.impl.auth.module.PreCallerLoginModule
com.ibm.ws.wssecurity.impl.auth.module.UNTCallerLoginModule
...
com.ibm.ws.wssecurity.impl.auth.module.WSWSSLoginModule
com.ibm.ws.security.server.lm.ltpaLoginModule
com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule

WebSphere WS-Security 런타임은 ltpaLoginModule 및 wsMapDefaultInboundLoginModule 로그인 모듈을 포함하지 않는 호출자의 JAAS 구성의 사용을 지원하지 않습니다.

UWebSphere 레지스트리에 액세스하지 않고 호출자 구성과 함께 UsernameToken을 사용하려면 UNTConsumeLoginModule 및 ltpaLoginModule 모듈이 레지스트리에 액세스하는 것을 막고 대체 모듈을 제공해야 합니다.

프로시저

  1. UNTConsumeLoginModule 모듈이 레지스트리에 액세스하는 것을 막으려면 UsernameToken 이용자의 인증 메소드를 대체하십시오. 자세한 정보는 twbs_replace_authmethod_usernametoken.html의 내용을 참조하십시오.
  2. com.ibm.ws.wssecurity.impl.auth.module.WSWSSLoginModule 위에 쌓이는 JAAS 로그인 모듈을 개발하십시오. 다음 예는 JAAS 로그인 모듈의 샘플 코드를 보여줍니다.
    package test.tokens;
    
    import java.util.Map;
    import java.util.Hashtable;
    
    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.SecurityToken;
    import com.ibm.wsspi.security.token.AttributeNameConstants;
    
    public class MyAuthLoginModule implements LoginModule {
    
      private Map<String, ?> _sharedState;
    
      public void initialize(Subject subject, CallbackHandler callbackHandler,
                             Map<String, ?> sharedState, Map<String, ?> options) {
    
        this._sharedState = sharedState;  
      }
    
      public boolean login() throws LoginException {
        //For the sake of readability, this login module does not
        //protect against all NPE's
    
    	String username = null;
    	  
    	// get the caller token
    	SecurityToken callerIdentityToken = (SecurityToken)this._sharedState.get(
    	    com.ibm.wsspi.wssecurity.core.Constants.WSSECURITY_CALLER_IDENTITY);
    
    	// if its a UsernameToken, get the username
    	if (callerIdentityToken instanceof UsernameToken) {
    	  username = ((UsernameToken)callerIdentityToken).getUsername();
    	}
    	if (username == null) {
    	  throw new LoginException("Unable to obtain username");
    	}
    
    	Hashtable customProperties = (Hashtable)_sharedState.get(AttributeNameConstants.WSCREDENTIAL_PROPERTIES_KEY);
    	if (customProperties == null) {
    	  customProperties = new Hashtable();
    	}
    
    	// setting the UNIQUEID makes ltpaLoginModule skip the registry check	  
    		// Default realm is used here, but any trusted realm can be used
       String uid = "defaultWIMFileBasedRealm/" + username;
       customProperties.put(AttributeNameConstants.WSCREDENTIAL_UNIQUEID, uid)
     //implement the rest of the methods required by the
     //LoginModule interface
    }
  3. 새 JAAS 로그인 구성을 작성하십시오.
    1. 관리 콘솔에서 보안 > 글로벌 보안으로 이동하십시오.
    2. 인증 아래에서 JAAS(Java Authentication and Authorization Service) > 시스템 로그인으로 이동하십시오.
    3. 새로 작성을 클릭하고, 별명 아래에서 test.auth.unt를 입력하십시오.
    4. JAAS 로그인 모듈을 추가하십시오. 표시된 순서대로 다음 로그인 모듈을 추가해야 합니다.
      • com.ibm.ws.wssecurity.impl.auth.module.PreCallerLoginModule
      • com.ibm.ws.wssecurity.impl.auth.module.UNTCallerLoginModule
      • test.tokens.MyAuthLoginModule
        중요사항: 이 모듈의 이름은 사용자가 개발한 JAAS 로그인 모듈과 일치해야 합니다.
      • com.ibm.ws.wssecurity.impl.auth.module.WSWSSLoginModule
      • com.ibm.ws.security.server.lm.ltpaLoginModule
      • com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule
      각 로그인 모듈마다:
      1. JAAS 로그인 모듈 아래에서 새로 작성을 클릭하십시오.
      2. 모듈 클래스 이름 아래에서 로그인 모듈의 이름을 입력하십시오.
      3. test.tokens.MyAuthLoginModule의 경우에만 로그인 모듈 프록시 사용을 선택하십시오.
      4. 확인을 클릭하십시오.
    5. 확인저장을 차례로 클릭하십시오.
  4. 새 JAAS 구성을 사용하도록 호출자를 구성하십시오.
    1. 관리 콘솔에서 변경하려는 바인딩 구성을 여십시오.
    2. WS-Security > 호출자를 선택하십시오.
    3. 변경하려는 호출자 구성을 선택하십시오.
    4. JAAS 로그인 아래에서 test.auth.unt를 선택하십시오.
    5. 확인저장을 차례로 클릭하십시오.
  5. 애플리케이션 서버를 다시 시작하여 JAAS 구성 변경사항을 적용하십시오.
  6. 서비스를 테스트하십시오.

주제 유형을 표시하는 아이콘 태스크 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_config_wssec_caller_no_reg
파일 이름:twbs_config_wssec_caller_no_reg.html