2

同じ tomcat に 2 つのアプリケーションがあります。これらのアプリケーションの 1 つは、認証にスプリング セキュリティを使用します。最初のアプリケーションにログインしたときに、メソッド getRemoteUser が 2 番目のアプリケーションで有効なユーザー名を返すようにしたいと考えています。

これを達成する簡単な方法はありますか?それを行う最も簡単な解決策を教えてください。

回答ありがとうございます

4

2 に答える 2

0

これにより、ローカルで現在ログインしているユーザーが返されます。

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;
  }
}
于 2009-08-21T18:11:39.207 に答える
0

アプリケーション 2 がアプリケーション 1 のセキュリティ情報にアクセスできるとは思えません。とにかく直接ではなく、おそらくリモーティングを使用するか、Web サービスを使用すると、これを行うことができます。ただし、Spring セキュリティ フレームワークには、Java コードだけでアプリケーションを横断して情報を取得できる場所はないと思います。

于 2009-08-21T17:02:43.247 に答える