Доступ к серверу oam, размещенному в https, из клиентской программы java

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

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. Когда я запускаю приведенный выше код, я получаю ошибку, как показано ниже

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, и вот где я застрял. Любая помощь по этому вопросу будет действительно полезна.

1 ответ

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

Другие вопросы по тегам