我正在实现一小段代码以登录到受 SAML 保护的网站。
我有这段代码:
HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
通过它我与某些 URL 建立了安全的 SSL 连接。在前两次,使用两个不同的 URL,它可以完美运行,但是当我尝试执行特定请求(准确地说是对 IDP 服务器的 SAMLRequest)时,脚本会出现此错误:
[ATTENTION] An error occured: java.lang.IllegalStateException: connection not yet open
我真的不明白发生了什么。在连接到 SP 时,连接良好(我也能够获取此信息,所以我认为 SSL 正在工作con.getCipherSuite() = TLS_RSA_WITH_AES_128_CBC_SHA
),但随后它停止了。
由于我尝试发出的请求是 SAML 方案中唯一真正重要的请求,因此在我尝试执行的三个请求中,我认为这是一个服务器端问题:
Connect to the homepage of the service provider (SP) in order to get JSESSIONID cookie: it works
Connect to the SP login page in order to get the SAML Request: it works
Connect to the IDP in order to send (via GET) the SAML Request: ERROR.
我怎样才能摆脱这个问题,并确保连接是安全的?我非常需要避免 MINM 攻击,因为脚本将在需要强大安全级别的 Android 应用程序中实现......