Вход в SiteMinder с использованием Java - PullRequest
2 голосов
/ 01 июля 2011

Поскольку я работаю над проектом, который вызывает URL-адрес, и этот URL-адрес использует siteminder, поэтому каждый раз, когда я делаю запрос к этому URL-адресу

https://some-host/a/getmeta?id=10

перенаправляет меня на другой URL-адрес, содержащий объект siteminder

location: https://login.somehost.com/siteminderagent/nocert/1309460767/smgetcre
d.scc?TYPE=16777217&REALM=-SM-Documentum%20[12%3a06%3a07%3a4932]&SMAUTHREASON=0&
METHOD=GET&SMAGENTNAME=-SM-6D9yKpar83ASDc5Sb4KDjZtHgfZId%2fYHFKbzwYvx5EUeGMi0dOa
uGVx6wOk1daI3&TARGET=-SM-http%3A%2F%2Fsome-host%2Fa%2Fgetmeta%3Fid%3D10

И если я открою эту ссылку в браузере, она попросит ввести имя пользователя и пароль, а если я предоставлю имя пользователя и пароль, тогда я верну свой фактический контент ..

Так как я могу проходить аутентификацию каждый раз, когда использую HTTPCLIENT 4.1.1.

Ответы [ 2 ]

2 голосов
/ 06 июля 2011

Ну, вы можете следить за редиректом, заполнять поля и публиковать форму. Он доставит вас туда, куда вы хотите.

Поля, вероятно, являются стандартными полями USER и PASSWORD из siteminder. вам просто нужно убедиться, что ваш Java-код правильно обрабатывает перенаправления и поддерживает куки. Commons-httpclient делает это для вас довольно легко.

0 голосов
/ 28 апреля 2016
<h1>I used below code to connect site minder authentication. Its working fine.</h1>

<code>
@SuppressWarnings("restriction")
    public static void main(String[] args) throws IOException
    {
        disableSslVerification();

        CookieManager cookimngr = new CookieManager(null, CookiePolicy.ACCEPT_ALL); 
        CookieHandler.setDefault(cookimngr);
        URL svrUrl = new URL("https://ABC_HOST:ABC_PORT/XYZ/");
        HttpURLConnection conn = (HttpURLConnection)svrUrl.openConnection();
        conn.setRequestProperty("Authorization", "Basic " + new sun.misc.BASE64Encoder().encode((username+":"+password).getBytes()));

        InputStream in = conn.getInputStream();

         for (HttpCookie h : cookimngr.getCookieStore().getCookies()){
             System.out.println(h.getName());
             System.out.println(h.getValue());
         }
        in.close();

    }
/** disable the SSL Certificate Verification **/
    public static void disableSslVerification() {
        try
        {
            // Create a trust manager that does not validate certificate chains
            TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
                public void checkClientTrusted(X509Certificate[] certs, String authType) {
                }
                public void checkServerTrusted(X509Certificate[] certs, String authType) {
                }
            }
            };
            // Install the all-trusting trust manager
            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, trustAllCerts, new java.security.SecureRandom());
            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
            // Create all-trusting host name verifier
            HostnameVerifier allHostsValid = new HostnameVerifier() {
                public boolean verify(String hostname, SSLSession session) {
                    return true;
                }
            };
            // Install the all-trusting host verifier
            HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (KeyManagementException e) {
            e.printStackTrace();
        }

    }
</code>
...