Guiceでカスタム認証フィルタを実装しようとしています。トークンを受け取り、トークンからユーザー名と領域を取得し、プリンシパルを作成します。今私は立ち往生しており、プリンシパルの設定方法はわかりません。もし私がちょうどこれをこのように設定することができればいいのですがrequest.setUserPrincipal(principal);
、しかし明らかに私はできません。Guiceフィルタでプリンシパルを作成
どうすればいいですか?
マイdoFilterメソッドは次のようになります。
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
String authorizationHeader = request.getHeader(HttpHeaders.AUTHORIZATION);
if (authorizationHeader != null && authorizationHeader.length() > 0) {
String token = authorizationHeader.substring("Bearer".length()).trim();
if (token.length() > 0) {
try {
Credentials credentials = securityService.getCredentials(token);
String username = credentials.getUsername();
String realm = credentials.getRealm();
Principal principal = new HttpPrincipal(username, realm);
// request.setUserPrincipal(principal);
LOGGER.info(credentials);
} catch (Exception e) {
LOGGER.error(e);
}
}
}
filterChain.doFilter(servletRequest, servletResponse);
}