4

Spring Boot + OAuth2 + Google 経由のログインを使用した認証サーバーの実装があります。そして、バックエンド データ サービス用のリソース サーバーです。JDBC トークン ストアを使用しました。すべてがうまく機能します。しかし、ログアウトの実装を理解するのに苦労しています。現在、ユーザーがログアウトをクリックするたびに、ブラウザーのローカル ストレージからトークンを削除するだけですが、セッションは認証サーバーでアクティブなままであるため、再度ログインする必要はありません。私が望むのは、ログアウトのクリックを使用するたびに、セッションを無効にして、彼に再度ログインさせたいということです。

これを行う良い方法はありますか?現在、Spring Boot Auth サーバー構成にログアウト構成がありません。

ありがとう

4

1 に答える 1

0

そのために LogoutSuccessHandler を登録してみてください。次のようなもの:

@Configuration
@EnableWebSecurity
@EnableResourceServer
public class SecurityConfig extends ResourceServerConfigurerAdapter {

    @Bean
    public DefaultTokenServices tokenServices() {
        return new DefaultTokenServices();
    }

    @Override
    public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
        resources.resourceId("myResourceId");
        resources.tokenServices(tokenServices());
    }

    @Override
    public void configure(HttpSecurity http) throws Exception {
       // configure http security here...

        http.logout().logoutSuccessHandler(new SimpleUrlLogoutSuccessHandler() {
                      @Override
                      public void onLogoutSuccess(HttpServletRequest request,
                                                  HttpServletResponse response,
                                                  Authentication authentication) {
                          OAuth2AccessToken token = tokenServices().getAccessToken((OAuth2Authentication) authentication);
                          tokenServices().revokeToken(token.getValue());
                      }
                  });

    }
}
于 2015-06-23T21:17:37.460 に答える