2013-07-05 1 views
0

Привет, у меня есть требование доступа к серверу oam, который размещен в протоколе https. Я получил сертификат и файлы obaccess.xml с сервера для доступа. некоторые issues.Below мой кодДоступ к серверу oam, размещенному в https, из клиентской программы java

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(); 

}} Я поместил obaccess.xml и cwallet.sso в пути D: //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

Hi, Где вы можете это решить? – shifu

ответ

0

Вы получаете эту ошибку, потому что не создали экземпляр AMClient. В OAM SDK требуется создать экземпляр AMCLient, прежде чем делать что-либо еще с SDK, например, начать новый сеанс.

+0

Hi Bill, Не могли бы вы рассказать о своем ответе? Я столкнулся с той же проблемой. Можете ли вы указать на какой-либо документ? – shifu