带有Cookie的HttpsUrlConnection ADFS身份验证不起作用

时间:2018-09-27 13:29:16

标签: cookies authorization adfs httpsurlconnection

我正在尝试从Android应用程序连接到由ADFS保护的Web API。我成功实现了ADAL。登录到ADFS后,我收到一个令牌和一个cookie。使用该cookie,我应该能够查询webapi,但是我总是被重定向到登录页面。在邮递员中使用相同的cookie字符串,我可以成功查询Web API。有人可以帮助我了解问题出在哪里吗?这是我的代码:

try {
        CookieManager cookieManager = CookieManager.getInstance();
        String cookie = cookieManager.getCookie(AUTHORITY);

        URL url = new URL(urlString);
        HttpsURLConnection connection = (HttpsURLConnection) 
        url.openConnection();
        connection.addRequestProperty("Cookie", cookie);
        connection.setConnectTimeout(60000);
        connection.setDoOutput(true);
        connection.setDoInput(true);
        connection.setRequestMethod("POST");
        connection.setUseCaches(false);
        connection.setInstanceFollowRedirects(false);

        OutputStreamWriter w = new OutputStreamWriter(connection.getOutputStream());
        w.write(contents);
        w.flush();

        InputStream istream = connection.getInputStream();
        String result = convertStreamToUTF8String(istream);

        return result;
} catch (Exception e) {
        e.printStackTrace();
        return null;
}

1 个答案:

答案 0 :(得分:0)

显然,来自授权URL的cookie是不够的。我需要添加另一个cookie(EdgeAccessCookie)。在仔细检查Postman控制台中的cookie字符串后发现了这一点。