カスタムフィルタを追加し、Authorizationヘッダーを要求に追加できます。
Authorizationヘッダーは、単純にbase64でエンコードされた "username:password"文字列です。
public class AuthenticatedFilter extends ZuulFilter {
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 10;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
String auth = "username" + ":" + "password";
byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(Charset.forName("ISO-8859-1")));
String authValue = "Basic " + new String(encodedAuth);
ctx.addZuulRequestHeader(HttpHeaders.AUTHORIZATION, authValue);
return null;
}
}
EDIT:Zuulがこのフィルタ用のBeanを作成する必要があります。あなたのConfigurationクラス/メインアプリケーションクラスに次のように追加してください:
@Bean
public AuthenticatedFilter getAuthenticatedFilter() {
return new AuthenticatedFilter();
}
出典
2017-10-04 15:12:49
pan
ありがとう、それを試みますが、認証ヘッダーの一部としてユーザーIDとパスワードを送信する方法はありますか? – Debopam
私は自分の答えを更新しました。 簡潔に言えば、ヘッダーのuseridとpassword部分を生成するために、単に "username:password"文字列をbase64でエンコードします。 – pan
StandardCharsetsを使用することもできます – rj2700