アプリケーションから送信された別のサーバー(HTTP基本認証を使用する)へのリクエストを処理するためにProxyServlet
があります。実際に要求が発生する前にサーブレットが手動でヘッダーを追加します。資格情報を入力する必要があります。servletRequestにHttp基本認証を追加する
私はそれにアクセスしようとしたとき、私は動作するように見えるdoes notのHttpServletRequestWrapper
public class DataServlet extends ProxyServlet {
@Override
protected void service(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
throws ServletException, IOException {
final SystemCredentials credentials = new SystemCredentials("username", "password");
HttpServletRequestWrapper wrap = new HttpServletRequestWrapper(servletRequest){
@Override
public String getHeader(String name) {
if (name.equals("Authorization")){
String encoding = Base64.getEncoder().encodeToString((credentials.getUser().concat(":").concat(credentials.getPassword()).getBytes()));
return "Basic " + encoding;
} else
return super.getHeader(name);
}
};
super.service(wrap, servletResponse);
}
}
を使用して、以下のこのコードのようなものを試してみました、ポップアップを表示し、リモートサーバーの資格情報を要求します。
私のweb.xmlが
<servlet>
<servlet-name>data</servlet-name>
<servlet-class>foo.package.servlet.DataServlet</servlet-class>
<init-param>
<param-name>targetUri</param-name>
<param-value>http://fooServer/DataServer</param-value>
</init-param>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>data</servlet-name>
<url-pattern>/DataServer/*</url-pattern>
</servlet-mapping>
この作品を作るための他の方法がありますが含まれていますか?
ありがとうございます!