2013-07-05 3 views
0

안녕하세요. https 프로토콜에서 호스팅되는 oam 서버에 액세스해야하는 요구 사항이 있습니다. 액세스 할 서버에서 인증서와 obaccess.xml 파일을 받았습니다.하지만 여전히 직면하고 있습니다. 일부 issues.Below 내가 obaccess.xml 및 경로 D의 cwallet.sso에 놓여있다 내 코드자바 클라이언트 프로그램에서 https로 호스팅되는 oam 서버에 액세스

import java.util.Hashtable; 
import oracle.security.am.asdk.*; 

public class JAccessClient 
{ 
    public static final String ms_resource ="//1.1.1.1:14101/rest/userprofile";    
    public static final String ms_protocol = "https"; 
    public static final String ms_method = "GET"; 
    public static final String ms_login = "admin"; 
    public static final String ms_passwd = "admin"; 
    public static final String m_configLocation = "D:\\Configfiles"; 

    public static void main(String argv[]) 
    { 
     AccessClient ac = null; 
     try 
     { 
      System.out.println("Entered Try.."); 
      ac = AccessClient.createDefaultInstance(m_configLocation,AccessClient.CompatibilityMode.OAM_10G); 
      System.out.println("Created Default Instance.."); 
      ResourceRequest rrq = new ResourceRequest(ms_protocol, ms_resource,ms_method); 
      System.out.println("Created Resource Request object.."); 

      if (rrq.isProtected()) 
      { 
       System.out.println("Resource is protected."); 
       AuthenticationScheme authnScheme = new AuthenticationScheme(rrq); 
       if (authnScheme.isForm()) 
       { 
        System.out.println("Form Authentication Scheme."); 
        Hashtable creds = new Hashtable(); 
        creds.put("userid", ms_login); 
        creds.put("password", ms_passwd); 
        UserSession session = new UserSession(rrq, creds); 
        if (session.getStatus() == UserSession.LOGGEDIN) 
        { 
         if (session.isAuthorized(rrq)) 
         { 
          System.out.println("User is logged in and authorized for the"+"request at level " + session.getLevel()); 
          System.out.println("User Identity:"+session.getUserIdentity()); 
          System.out.println("Status: "+session.getStatus()); 
          System.out.println("Start time:"+session.getStartTime()); 
          System.out.println("Session Token:"+session.getSessionToken()); 
          System.out.println("Last Usetime:"+session.getLastUseTime()); 

         } 
         else 
         { 
          System.out.println("User is logged in but NOT authorized"); 
         } 
         //user can be loggedout by calling logoff method on the session object 
        } 
        else 
        { 
         System.out.println("User is NOT logged in"); 
        } 
       } 
       else 
       { 
        System.out.println("non-Form Authentication Scheme."); 
       } 
      } 
      else 
      { 
       System.out.println("Resource is NOT protected."); 
      } 
    } 
    catch (AccessException ae) 
    { 
    //System.out.println("Access Exception: " + ae.getCause()); 
      ae.getStackTrace(); 
    } 
    ac.shutdown(); 

} } 입니다 : 내가 위의 코드를 실행 //ConfigFiles.When 내가 오류로 얻을 이하

Entered Try.. 
Jul 05, 2013 9:04:49 AM oracle.security.am.asdk.impl.Configuration setEncryptedPassword 
SEVERE: Failed to perform encrypt password operation. 
Jul 05, 2013 9:04:49 AM oracle.security.am.asdk.impl.Configuration setEncryptedPassword 
SEVERE: 
java.lang.NumberFormatException: For input string: "9a" 
at java.lang.NumberFormatException.forInputString(Unknown Source) 
at java.lang.Integer.parseInt(Unknown Source) 
at java.lang.Integer.parseInt(Unknown Source) 
at oracle.security.am.common.nap.util.ObCrypt.convert(ObCrypt.java:163) 
at oracle.security.am.common.nap.util.ObCrypt.decrypt(ObCrypt.java:100) 
at oracle.security.am.common.nap.util.ObCrypt.decrypt(ObCrypt.java:214) 
at oracle.security.am.asdk.impl.Configuration.decrypt(Configuration.java:810) 
at  oracle.security.am.asdk.impl.Configuration.decryptPassword(Configuration.java:766) 
at oracle.security.am.asdk.impl.Configuration.setEncryptedPassword(Configuration.java:242) 
at oracle.security.am.asdk.impl.ConfigXMLHandler.processConfig(ConfigXMLHandler.java:570) 
at oracle.security.am.asdk.impl.ConfigXMLHandler.readConfigurationFromFile(ConfigXMLHandler.java:124) 
at oracle.security.am.asdk.AccessClient.initialize(AccessClient.java:608) 
at oracle.security.am.asdk.AccessClient.<init>(AccessClient.java:527) 
at oracle.security.am.asdk.AccessClient.createDefaultInstance(AccessClient.java:234) 
at JAccessClient.main(JAccessClient.java:21) 

Jul 05, 2013 9:04:49 AM oracle.security.am.asdk.AccessClient initialize 
SEVERE: Oracle Access SDK initialization failed. 
oracle.security.am.asdk.AccessException: OAMAGENT-02072: Failed to perform encrypt password operation. 
at oracle.security.am.asdk.impl.Configuration.setEncryptedPassword(Configuration.java:263) 
at oracle.security.am.asdk.impl.ConfigXMLHandler.processConfig(ConfigXMLHandler.java:570) 
at oracle.security.am.asdk.impl.ConfigXMLHandler.readConfigurationFromFile(ConfigXMLHandler.java:124) 
at oracle.security.am.asdk.AccessClient.initialize(AccessClient.java:608) 
at oracle.security.am.asdk.AccessClient.<init>(AccessClient.java:527) 
at oracle.security.am.asdk.AccessClient.createDefaultInstance(AccessClient.java:234) 
at JAccessClient.main(JAccessClient.java:21) 
Caused by: java.lang.NumberFormatException: For input string: "9a" 
at java.lang.NumberFormatException.forInputString(Unknown Source) 
at java.lang.Integer.parseInt(Unknown Source) 
at java.lang.Integer.parseInt(Unknown Source) 
at oracle.security.am.common.nap.util.ObCrypt.convert(ObCrypt.java:163) 
at oracle.security.am.common.nap.util.ObCrypt.decrypt(ObCrypt.java:100) 
at oracle.security.am.common.nap.util.ObCrypt.decrypt(ObCrypt.java:214) 
at oracle.security.am.asdk.impl.Configuration.decrypt(Configuration.java:810) 
at oracle.security.am.asdk.impl.Configuration.decryptPassword(Configuration.java:766) 
at oracle.security.am.asdk.impl.Configuration.setEncryptedPassword(Configuration.java:242) 
... 6 more 

Exception in thread "main" java.lang.NullPointerException 
at JAccessClient.main(JAccessClient.java:75) 

OAM이 여기에 내가 갇혀있다. 이것에 관한 도움이 정말 도움이 될 것입니다.

+0

안녕하세요, 어디서 문제를 해결할 수 있습니까? – shifu

답변

0

AMClient의 인스턴스를 만들지 않았기 때문에이 오류가 발생합니다. OAM SDK는 새로운 세션을 시작하는 것과 같은 SDK를 사용하여 다른 작업을 수행하기 전에 AMCLient의 인스턴스를 생성해야합니다.

+0

안녕하세요, 답변을 자세히 설명해 주시겠습니까? 나는 같은 문제에 부딪쳤다. 어떤 문서를 가리킬 수 있습니까? – shifu