2013-07-05 2 views
0

Salut j'ai une obligation d'accéder à un serveur OAM qui est hébergé dans https protocol.I obtenu le certificat et les fichiers obaccess.xml du serveur à access.But suis toujours face certains issues.Below est mon codel'accès au serveur hébergé OAM https du programme client 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(); 

}} J'ai placé le obaccess.xml et le cwallet.sso dans le chemin D: //ConfigFiles.When je lance le code ci-dessus je reçois l'erreur ci-dessous

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) 

Je suis nouveau sur OAM et voici où je suis coincé. Toute aide à ce sujet sera très utile.

+0

Salut, Où avez-vous pu résoudre ce problème? – shifu

Répondre

0

vous obtenez cette erreur parce que vous ne l'avez pas créé une instance d'un AMClient. Le SDK OAM requiert que vous créez une instance d'un AMCLient avant de faire quoi que ce soit d'autre avec le SDK, par exemple en démarrant une nouvelle session.

+0

Salut Bill, Pouvez-vous préciser votre réponse? J'ai rencontré le même problème. Pouvez-vous pointer vers un document? – shifu

Questions connexes