サーバー認証を適切に処理しているかどうかを理解しようとしています
Facebookを使用して自動ログインするサーバーを作成しています。さらに、休止状態を使用しています
デフォルトと同じプロセスを作成することでそれを行いますJdbcUsersConnectionRepository
が、常にユーザーを返します。見つからない場合。
@Override public List<String> findUserIdsWithConnection(Connection<?> connection) { List<String> ret = new LinkedList<String>(); ConnectionKey key = connection.getKey(); MyUser myUser = userService.getUserBySocialConnection(key.getProviderId(), key.getProviderUserId()); if (myUser == null) { MyUser user = userService.createUserFromConnection(connection); String myUserId = String.valueOf(user.getId()); ret.add(myUserId); }else { ret.add(String.valueOf(myUser.getId())); } return ret; }
だから私signIn
はこのコードを持っています。ユーザーをサインインするには:
public String signIn(String userId, Connection<?> connection, NativeWebRequest request) { MyUser user = userService.getUserById(Long.parseLong(userId)); Authentication authentication = SecurityToolbox.signInUser(user); // set remember-me cookie MyUser myu = (MyUser)authentication.getPrincipal(); userCookieGenerator.addCookie(String.valueOf(myu.getId()), request.getNativeResponse(HttpServletResponse.class)); return null; }
および からのサインイン コードSecurityToolBox
:
public static Authentication signInUser(MyUser user) { List<GrantedAuthority> authorities = getAuthorities(user); Authentication authentication = new UsernamePasswordAuthenticationToken(user, "", authorities); SecurityContextHolder.getContext().setAuthentication(authentication); return authentication; }
現在、これはすべて、userInterceptor
利用可能な場合は Cookie の読み取りを処理し、存在する場合はユーザーを記憶する、私が書いた によって処理されます。Cookie を使用してユーザーに送信できる最も保護された情報は何ですか?
Spring Security にセッション/remmeberme/認証プロセスを処理させたいのですが、何をすべきかよくわかりません。
最初の質問
は、次の要求で、サーバーでユーザーを適切に認証するのに十分なコードですか? です。ユーザーがログインしていると安全に想定できるかどうかを尋ねたらuserInterceptor
?SecurityContextHolder.getContext().getAuthentication() != null
今度は、インターセプターを使用して自分で認証を処理するのではなく、春のセキュリティで認証を処理したいと考えています。そこで、認証マネージャーを作成することを考えました。しかし、何を認証する必要があるのか わかりません
public class CustomAuthenticationManager implements AuthenticationManager { public Authentication authenticate(Authentication auth) throws AuthenticationException {}}
ユーザー名とパスワードがありません。Facebookで認証してログインしただけなので、何を認証すればよいですか。一般的に、ここにはいくつかの知識のギャップがあり、すべてをまとめるために何をすべきかを本当に理解していません
2番目の質問authenticate
私の状況では、関数で
正確に何が起こる必要がありますか
3番目の質問 私は春のセキュリティが私を覚えているセッションとクッキーを処理したいと思います. u/pトークンと同じremember meトークンがあることは理解していますが、自分の状況でそれをどのように使用するべきかまだわかりません。
4番目の質問 現在、サインイン プロセス全体は、サーバーに送信されるすべての要求 (リソースではない) に対して行われます。それが起こるはずの方法ですか?
ありがとう。