プロキシ認証を統合したMicrosoft ISA Serverの背後にあるアプレットです.Isaプロキシサーバーは、認証資格情報を持たない接続に対してhttp 405(NOT 407) 。私のjava.net.Authenticator
クラスは呼び出されません。 この場合、プロキシサーバーへの接続をどのように認証できますか?
アプレットに署名され、java1.6でコンパイルされます。 URLConnection
クラスが接続に使用されます。認証を必要とするプロキシの背後にhttp接続をオープンしていますが、407を返しません。
答えて
この問題を回避するには2つの方法があり、どちらも理想的ではありません。まず、認可情報でリクエストを送信しても405
のレスポンスコードが返されないことを確認したと思いますか?答えがイエスである場合は、ヘッダーとして要求にProxy-authorization
ヘッダーを設定してみてくださいすることができます
URL url = new URL("http://location");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Proxy-authorization", authorizationValue);
そのヘッダのフォーマットは、プロキシサーバが必要とされる許可方式に依存するので、あなたはよあなたの特定のシナリオについていくつかの調査をしなければなりません。
2番目のアプローチでは、応答コードをスプーフィングして通常のプロキシ認証パスを強制する内部JDKクラスをサブクラス化します。それは予期しない結果をもたらすことができるように
public class HttpURLConnection extends sun.net.www.protocol.http.HttpURLConnection {
@Override
public int getResponseCode() throws IOException {
int code = super.getResponseCode();
if (code == HTTP_BAD_METHOD) {
code = HTTP_PROXY_AUTH;
responseCode = code;
}
return code;
}
}
はもちろん、これは実際の405
応答をマスクします:まず、ここでのサブクラスです。これを使用するようにURLオブジェクトを伝えることはjava.net.URLStreamHandlerFactory
のサブクラスを必要とします。
public class URLStreamHandlerFactory extends java.net.URLStreamHandlerFactory {
@Override
URLStreamHandler createURLStreamHandler(String protocol) {
if (!protocol.equals("http")) {
return null;
} else {
return new java.net.URLStreamHandler {
protected String proxy;
protected int proxyPort;
public Handler() {
proxy = null;
proxyPort = -1;
}
public Handler (String proxy, int port) {
this.proxy = proxy;
this.proxyPort = port;
}
@Override
protected java.net.URLConnection openConnection(URL u) throws IOException {
return openConnection(u, (Proxy)null);
}
@Override
protected java.net.URLConnection openConnection(URL u, Proxy p) throws IOException {
return new HttpURLConnection(u, p, this);
}
@Override
protected int getDefaultPort() {
return 80;
}
}
}
}
}
その後、あなたは初期化コードでURL.setURLStreamHandlerFactory(new URLStreamHandlerFactory());
どこかを呼び出すことにより、このオブジェクトを使用することができます。私はthis siteとthis siteがコアJavaクラスの仕組みを調べるのに役立つことを発見しました。 HTTPSをサポートする必要がある場合は、そのプロトコルに同様の変更を加える必要があります。
うまくいけば、これらの解決策の1つがあなたに役立つことを望みます。後者のアプローチがアプレットのセキュリティ制約の中で機能することは完全にはわかりません。前者はすべきだ。 Apache HttpComponentsなどの別のHTTPライブラリを使用する方が簡単な場合もあります。
がヘッダーに代理承認されますか?またはプロキシ認証ヘッダー?認証プロトコルは時々(ntlmまたはkerberos)異なるので、このアプローチは非常に難しいと思いますか?アプローチ2で:レスポンスコードの設定で十分でしょうか?私はまた、必要な認証の種類についていくつかのヘッダーを設定する必要があると思いますか? – e13420xx
それをAproachは 'Proxy-authorization'になります。スキームが変化しているのなら、それは非常に難しいようです。したがって、 '405'が返されますが、どのタイプの認証が必要なのでしょうか?その場合は、必要な 'Proxy-Authenticate'レスポンスヘッダも含める必要があります。プロキシサーバーが誤って構成されていますか?これは重大な壊れた動作のように聞こえる!サーバーはブラウザなどの何かで正しく動作しますか? – laz
なぜ彼らはそれをそういう形にしたのかわからないが、彼らがしたことはそうだ。そのネットワークのクライアントは、ほとんどローカルにブラウズしているウェブにアクセスすることが非常に制限されています。明らかに、クライアント側でこの問題を解決するために問題が起きる可能性があるため、変更できません。 – e13420xx
- 1. ftpに接続できません:(407)プロキシ認証が必要です
- 2. ウェブサイトからhtmlコードをキャプチャ - リモートサーバがエラーを返しました:(407)プロキシ認証が必要です
- 3. WCFクライアント - 407 Webサービスの実行中にプロキシ認証が必要
- 4. プロキシ基本認証:HTTP 407エラー
- 5. System.Net.WebClientとプロキシ認証407エラー
- 6. SSL接続を介してフォワードHTTPプロキシに要求を接続しますか?
- 7. Gitは特別な接続とプロキシの背後で動作しません
- 8. C#接続プールでオープン接続を維持する必要があります
- 9. メールクライアントはプロキシの背後にあるメールサーバに接続できません
- 10. 接続は有効でオープンしている必要があります
- 11. Wifiに接続するキャプティブポータルを介してWeb認証が必要なアクセスポイント
- 12. ユーザはmysqlデータベースに接続しますが、認証しません
- 13. NetworkInfo.isConnected()はtrueを返しますが接続しません
- 14. OpenStack Python Novaclientは認証を必要としません
- 15. C#でTcpClientをプロキシの背後から接続するには?
- 16. WebProxyにエラー:プロキシ認証が必要
- 17. IISの背後にあるHTTPサーバー:認証ヘッダーを渡します。
- 18. 認証でWebサービスを消費しています。認証が必要です。
- 19. ClickOnceは、認証が必要なプロキシの背後にあるクライアントへのアプリケーションの展開をサポートしていますか?
- 20. プロキシ認証を使用してTeam Foundation Server(TFS)に接続する
- 21. グラバターからアバターを認証されたプロキシの背後にあるgitgで取得しています
- 22. Nuget + NuGetPowerTools + Enable-PackageRestore =プロキシの背後で認証に失敗しました
- 23. プロキシを通じてJavaのURLに接続しています
- 24. プロキシ認証の背後からsvcutil.exeを実行する方法
- 25. fsockopenを使用してSMTPサーバーに接続すると、PHPでプロキシとして動作しません。
- 26. xdebugとWAMPは接続しますが、Flashを使用しているときは接続しません。
- 27. HTTP NTLM認証プロキシサーバー経由で接続します
- 28. C# "追加情報:SMTPサーバーがセキュリティで保護された接続を必要としているか、クライアントが認証されていません。
- 29. System.Net.Mail.SmtpException SMTPサーバーがセキュリティ保護された接続を必要としているか、クライアントが認証されていません
- 30. SMTPサーバーが安全な接続を必要としているか、C#ASP.NETでクライアントが認証されていません
HttpURLConnectionに直接アクセスできますか、他のライブラリ経由ですか? – laz
@laz:はい私はそれにアクセスできます。アプローチ1では – e13420xx