プロキシ認証を統合した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. jmeterがプロキシをトンネルできません。 HTTPリクエストを設定し、プロキシサーバーのGUIにパラメータを入れている間プロキシは、「HTTP/1.1 407プロキシ認証が必要
- 3. 407 Windowsで必要なプロキシ認証8.1
- 4. ウェブサイトからhtmlコードをキャプチャ - リモートサーバがエラーを返しました:(407)プロキシ認証が必要です
- 5. pipインストールで407のプロキシ認証が必要です
- 6. WCFクライアント - 407 Webサービスの実行中にプロキシ認証が必要
- 7. プロキシ基本認証:HTTP 407エラー
- 8. タイムアウトエラー後のatlas-runビルドエラー「*/cargocpc/index.html」によるプロキシ認証が必要407
- 9. GitHubのクライアントを使用しているときにエラーが発生する:System.Net.WebException:リモートサーバーがエラーを返しました:(407)プロキシ認証が必要です
- 10. httr 'クライアントエラー:(407)プロキシ認証が必要です'
- 11. System.Net.WebClientとプロキシ認証407エラー
- 12. SSL接続を介してフォワードHTTPプロキシに要求を接続しますか?
- 13. gem install watir - エラー:gem(Net :: HTTPServerException)を実行しているときに407「プロキシ認証が必要」
- 14. HTTPS接続にHTTPSプロキシが必要か、HTTPプロキシを使用できますか?
- 15. MobileFirstプッシュ通知プロキシ - 407プロキシ認証エラー
- 16. 認証が必要なSOCKSプロキシに接続
- 17. Gitは特別な接続とプロキシの背後で動作しません
- 18. MicroStrategyで認証Apacheハイブを接続していません
- 19. C#接続プールでオープン接続を維持する必要があります
- 20. Python FTPオブジェクトはsocket.errorを返します:HTTPプロキシの背後にある[Errno 10060]?
- 21. cefsharpプロキシ認証が必要
- 22. 接続は有効でオープンしている必要があります
- 23. 接続は有効でオープンしている必要があります。C#
- 24. メールクライアントはプロキシの背後にあるメールサーバに接続できません
- 25. Wifiに接続するキャプティブポータルを介してWeb認証が必要なアクセスポイント
- 26. SFTP接続が「認証キャンセル」を返します
- 27. Openshiftに画像をプッシュできません(認証されていません:認証が必要です)
- 28. AWS SDKは企業のプロキシの背後に接続できません
- 29. 私のHeroku dynoがhttp認証を要求しています
- 30. 接続エラー接続は有効でオープンしている必要があります
HttpURLConnectionに直接アクセスできますか、他のライブラリ経由ですか? – laz
@laz:はい私はそれにアクセスできます。アプローチ1では – e13420xx