EclipseのデフォルトAPIを使用してHTTPS経由でサーバーに接続しています。私はチェーン付きの証明書を私のキーストアにインストールしました。しかし、Windowsはそれを好きではなく、certificate chaining error
をスローします。 Ubuntuでは、実際にうまくいきます!JavaとWindows - HTTPSによる認証の問題
Windowsでは、ここで私が見た「ハック」が基本的にすべての証明書を有効にするTrustManager
を作成しています。当分の間、これは問題ありません。私は後でそれに戻りますが、私の現在の問題は、私のコードがサーバに接続し、uc.setRequestProperty("Authorization", "Basic " + encodedLogin);
を使って認証しますが、実際に私が最初にログインしていたと思ったフォームのHTMLコードを返します。その行がなければ、403
が得られます。
ブラウザでサイトに行ったときに、ログインボックスが表示されました。私がログインすると、問題なくログオンしました。 Cancel
をクリックしてログインボックスを閉じると、コードが返す正確なHTMLフォームになりました。だから私は何とかこのポップアップボックスにログインする必要がありますか、またはWebフォームにログインするためにもう一度認証する必要があります。私はそれが十分に説明できることを願っています。
私の究極の目標は、サイトとのさらなる通信を行うために、ログインしてauthオブジェクトを自分のコードに戻すことです。私はちょうどこの小さなくすぶった部分に何日も立ち往生しています!どんな助けも大歓迎です!!
自分のコードに加えて、HTMLフォームのコードを添付しました。
ありがとうございました。
マイコード:
try
{
String login = "MyUser:MyPass";
byte[] encodedLogin = new Base64().encode(login.getBytes());
StringBuilder parsedContentFromUrl = new StringBuilder();
HttpsURLConnection uc = (HttpsURLConnection) webURL.openConnection();
//uc.setRequestProperty("Proxy-Authorization", "Basic " + encodedLogin);
uc.setRequestProperty("Authorization", "Basic " + encodedLogin);
//uc.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
uc.connect();
//uc.getInputStream();
BufferedInputStream in = new BufferedInputStream(uc.getInputStream());
//System.out.println(uc.getRequestProperty("WWW-Authenticate"));
int ch;
while ((ch = in.read()) != -1) {
parsedContentFromUrl.append((char) ch);
}
System.out.println(parsedContentFromUrl);
}
catch (IOException e)
{
System.out.println("IOException::"+e.getMessage());
e.printStackTrace();
}
HTMLのWebフォーム
<FORM METHOD=POST ACTION="/mylogin.form">
<FONT SIZE="+2">
<TABLE BORDER="0" WIDTH="400">
<TR>
<TD ALIGN="LEFT"><UL><LI>Username</LI></UL></TD>
<TD><INPUT NAME="username" SIZE="15"></TD>
</TR>
<TR>
<TD ALIGN="LEFT"><UL><LI>Password</LI></UL></TD>
<TD><INPUT TYPE="PASSWORD" NAME="password" SIZE="15"></TD>
</TR>
</TABLE>
</FONT>
<INPUT TYPE="HIDDEN" NAME="login-form-type" VALUE="pwd">
<BR><INPUT TYPE="SUBMIT" VALUE="Login">
</FORM>
認証チェーンは、有効な認証機関からその下の特定のインスタンスまでのチェーンです。例えば。証明書に署名するSectionB証明書に署名するCompanyZ証明書に署名するVerisign。したがって、標準準拠のアプリケーションであれば、これにより却下を認識させることができます。 – Alfabravo
コメントをいただきありがとうございますが、私のコードはUbuntuで動作します。私の知る限り、私の質問のその部分は、Windowsのkeytool /キーストアの問題です。来週、私はおそらくそれを振り返ります。 – eoinzy