当前位置: 首页 > 知识库问答 >
问题:

如何从Oauth2 SSO服务器注销

颜志业
2023-03-14

我找到了关于SSO的教程https://github.com/dsyer/spring-security-angular/tree/master/oauth2带配置

oauth2 authserver

@Configuration
@Order(-10)
protected static class LoginConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private AuthenticationManager authenticationManager;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        http
            .formLogin().loginPage("/login").permitAll()
        .and()
            .requestMatchers().antMatchers("/login", "/oauth/authorize", "/oauth/confirm_access")
        .and()
            .authorizeRequests().anyRequest().authenticated()
            .and().sessionManagement();
        // @formatter:on
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.parentAuthenticationManager(authenticationManager);
    }
}

oauth2 ui

@Override
    public void configure(HttpSecurity http) throws Exception {
        http.logout().and().antMatcher("/**").authorizeRequests()
                .antMatchers("/index.html", "/home.html", "/", "/login").permitAll()
                .anyRequest().authenticated().and().csrf()
                .csrfTokenRepository(csrfTokenRepository()).and()
                .addFilterAfter(csrfHeaderFilter(), CsrfFilter.class);
    }

我只需要authserver进行一次登录验证,所以当用户已经通过身份验证并重定向到oauth2 ui应用程序时,服务器中的身份验证登录将过期。因此,当用户在oauth2 ui中注销并尝试再次登录时,用户必须再次输入用户名和密码,因为服务器中的身份验证已过期。

对不起,我的英语不好,提前谢谢!

共有1个答案

殳阳飙
2023-03-14

如果你读了博客https://spring.io/blog/2015/02/03/sso-with-oauth2-angular-js-and-spring-security-part-v这实际上解释了实现与你正在做的相同类型的安全性的方法(实际上你只是实现了几乎相同的东西的jwt版本。如果你想要博客的实际代码,请使用相同repo的oauth2-vanilla版本)...最后,它明确指出“这是一个出了名的棘手问题”(如博客中所写)。实际上,同一系列博客的新版本解决了您的问题https://github.com/dsyer/spring-security-angular/tree/master/double.在这篇文章中,您可以看到如何在sping-ection和实际存储您的会话的redis服务器的帮助下实现注销。万事如意!如有任何澄清,请随时联系

 类似资料:
  • 在我的应用程序中,我有一个服务聊天原型客户端。该实现是一个tcp客户端,它在蓝图“init-method”中连接到远程服务器,并在“破坏方法”中断开连接。 我还有另一个捆绑包,它使用此ChatRogcolClient的连接从通道ChatChannel读取和发布消息。目前,我有一个xml文件,它创建了ChatProcolClient的bean,并创建了一个bean ChatChannel,其中注入了

  • 我有一个桌面java应用程序,一个MySQL数据库和一个Spring启动服务器。用户通过桌面应用程序登录,并通过与服务器分离的数据库验证用户。 但是在它验证用户之后,我希望它将用户登录到服务器中,并且能够在用户退出程序时注销他们。 我已将应用程序连接到服务器,并能够发送GET和POST请求。我环顾了一下互联网和stack overflow,但是我看不到任何有帮助的答案或资源。我看到的唯一解决方案是

  • 我正在docker compose中使用spring云发现服务。我控制下的所有Spring Boot服务在启动时通过“EnableDiscoveryClient”进行注册。 但我的docker compose中还有其他服务,我是从他们的dockerhub图像运行的。如何注册它们(数据库、ldap等)有没有办法配置eureka以查找已定义的组件(拉)而不是客户端“推”?

  • 我目前正面临一个问题,即Eureka不能注销已注册的服务。我直接从git hub中提取了Eureka服务器示例,只做了一个更改,。我的application.yml如下所示: 到目前为止,一旦eureka客户端启动,它将在3秒内注册。它只是在服务突然终止时从不取消注册。在我终止服务后,Eureka仪表盘上写着: 紧急情况!EUREKA可能错误地声称实例已经出现,而它们不是.续约低于阈值,因此实例不

  • 我们是否可以通过python客户端获得在Eureka服务器中注册的服务名称和IP? 我查看了python eureka客户端教程页面,但找不到与此相关的任何内容!