天天看點

通過portlet主動請求方式獲得和portal通過LTPA方式內建的系統的登陸後某個頁面的特定資訊(portal SSO)

  public CredentialVaultService initConcrete(PortletSettings settings) throws UnavailableException {      try {     CredentialVaultService vaultService = (CredentialVaultService)    getPortletConfig().getContext().getService(CredentialVaultService.class);   return vaultService   }    catch (Exception e) {      return null;     }      }        public Info getSomeInfoFromOtherSystem(PortletRequest request){ CredentialVaultService vaultService=initConcrete(request.getPortletSettings());   Subject subject = vaultService.getUserSubject(request);              Object[] temp = subject.getPrivateCredentials(LTPATokenCredential.class).toArray();            LTPATokenCredential ltpaToken = (LTPATokenCredential) temp[0];            System.out.println("LTPAToken: " + ltpaToken.getTokenString()); //        Create the LTPA Cookie in the Header            String cookie = "LtpaToken=" + ltpaToken.getTokenString(); //   建立一個需要獲得相關資訊的目标頁面(登陸後)            URL url = new URL("http://oatest.china.com/PSOA/ggfb.nsf/homepageviewforportal?OpenView");            HttpURLConnection con = (HttpURLConnection) url.openConnection();            con.setRequestProperty("cookie", cookie);            con.connect();                         // 通過 LTPATOKEN 可以得到成功登陸後的頁面            BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(),"GBK"));            String line = "";            while (line != null) {            line = br.readLine();                           }             br.close();            con.disconnect(); return getSomeInfoFromHtml(line);            }            catch (Exception e) {            e.printStackTrace();                       } }  Public Info getSomeInfoFromHtml(String html){ ….. };