同じ tomcat に 2 つのアプリケーションがあります。これらのアプリケーションの 1 つは、認証にスプリング セキュリティを使用します。最初のアプリケーションにログインしたときに、メソッド getRemoteUser が 2 番目のアプリケーションで有効なユーザー名を返すようにしたいと考えています。
これを達成する簡単な方法はありますか?それを行う最も簡単な解決策を教えてください。
回答ありがとうございます
同じ tomcat に 2 つのアプリケーションがあります。これらのアプリケーションの 1 つは、認証にスプリング セキュリティを使用します。最初のアプリケーションにログインしたときに、メソッド getRemoteUser が 2 番目のアプリケーションで有効なユーザー名を返すようにしたいと考えています。
これを達成する簡単な方法はありますか?それを行う最も簡単な解決策を教えてください。
回答ありがとうございます
これにより、ローカルで現在ログインしているユーザーが返されます。
String username = SecurityContextHolder.getContext()
.getAuthentication().getName();
したがって、appA が appBにログインしている場合、このコントローラーを公開すると、appA で appB にログインするために使用されるユーザー名が返されます。アプリAはすでに知っているはずです、うーん:
public class UserController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest req,
HttpServletResponse res) throws Exception {
String username = SecurityContextHolder.getContext()
.getAuthentication().getName();
ModelAndView mv = new ModelAndView("jsonResponse");
mv.addObject("username", username);
return mv;
}
}
アプリケーション 2 がアプリケーション 1 のセキュリティ情報にアクセスできるとは思えません。とにかく直接ではなく、おそらくリモーティングを使用するか、Web サービスを使用すると、これを行うことができます。ただし、Spring セキュリティ フレームワークには、Java コードだけでアプリケーションを横断して情報を取得できる場所はないと思います。