2012-09-21 6 views
0

COGNOS 사용자 정의 인증 제공자 (Java)를 SSO (Oracle Access Manager (OAM))로 구현하려고합니다.COGNOS 사용자 정의 인증 제공자에서 HTTP 헤더를 가져올 수 없습니다.

OAM의 작동 방식은 모든 HTTP/HTTPS 요청에서 유효한 세션 토큰 쿠키를 찾고 발견되지 않으면 OAM 로그인 페이지로 리디렉션한다는 것입니다.

쿠키가 유효하거나 권한이있는 경우 HTTP 헤더를 추가하고 사용자 이름을 설정하고 Cognos URL로 리디렉션합니다. 이제 Cognos는이 호출을 사용자 지정 인증 공급자에게 보냅니다.

이제 내 문제는 사용자 지정 인증 공급자에서이 헤더 값을 읽을 수 없다는 것입니다. ASP 페이지를 추가하려고 시도했는데 값이 전달된다는 것을 증명하는 값을 읽을 수 있으며 CAP Java 코드에서이 작업을 수행하는 방식에 문제가 있습니다.

코드 조각 내가 사용하려고합니다.

참고 : 쿠키는 정상적으로 가져올 수 있지만 모든 헤더는 항상 NULL입니다. 주 2 : 나는 INamespaceAuthenticationProvider/IBiBusHeader 및 INamespaceAuthenticationProvider2/IBiBusHeader2을 모두 사용하여

public class CAPClass extends Namespace 
    implements INamespaceAuthenticationProvider 
{ 
    private String GetSingleValue(String[] value) 
    { 
     if(value != null && value.length > 0) 
      return value[0]; 
     else 
      return null; 
    } 

    public void createLogs(String var, IBiBusHeader theAuthRequest) 
    { 
     CreateLog.LogMsg(var + ": " + GetSingleValue(theAuthRequest.getEnvVarValue(var))); 
     CreateLog.LogMsg(var + ": " + GetSingleValue(theAuthRequest.getTrustedEnvVarValue(var))); 
     CreateLog.LogMsg(var + ": " + GetSingleValue(theAuthRequest.getCredentialValue(var))); 
     //CreateLog.LogMsg(var + ": " + GetSingleValue(theAuthRequest.getTrustedCredentialValue(var))); 
    } 

    public IVisa logon(IBiBusHeader theAuthRequest) 
      throws UserRecoverableException, SystemRecoverableException, 
      UnrecoverableException 
    { 
     String var = "ObSSOCookie"; 
     String SessTok = GetSingleValue(theAuthRequest.getCookieValue(var)); 
     CreateLog.LogMsg(var + ": " + SessTok); 

     var = "REMOTE_USER"; 
     createLogs(var, theAuthRequest); 
     var = "HTTP_REMOTE_USER"; 
     createLogs(var, theAuthRequest); 
     var = "HEADER_REMOTE_USER"; 
     createLogs(var, theAuthRequest); 
     var = "HEADER_HTTP_REMOTE_USER"; 
     createLogs(var, theAuthRequest); 
     var = "HTTP_HEADER_REMOTE_USER"; 
     createLogs(var, theAuthRequest); 
     var = "SSO_LOGIN_ID"; 
     createLogs(var, theAuthRequest); 
     var = "HTTP_SSO_LOGIN_ID"; 
     createLogs(var, theAuthRequest); 
     var = "HEADER_SSO_LOGIN_ID"; 
     createLogs(var, theAuthRequest); 
     var = "HEADER_HTTP_SSO_LOGIN_ID"; 
     createLogs(var, theAuthRequest); 
     var = "HTTP_HEADER_SSO_LOGIN_ID"; 
     createLogs(var, theAuthRequest); 
     var = "OAM_REMOTE_USER"; 
     createLogs(var, theAuthRequest); 
     var = "HTTP_OAM_REMOTE_USER"; 
     createLogs(var, theAuthRequest); 
     var = "HEADER_OAM_REMOTE_USER"; 
     createLogs(var, theAuthRequest); 
     var = "HEADER_HTTP_OAM_REMOTE_USER"; 
     createLogs(var, theAuthRequest); 
     var = "HTTP_HEADER_OAM_REMOTE_USER"; 
     createLogs(var, theAuthRequest); 
    } 
} 

답변