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

Spring Boot Oauth2注销endpoint

华福
2023-03-14

我有一个Spring Boot REST应用程序,它分为资源服务器和Auth服务器--受无状态Oauth2安全性保护。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.security.oauth</groupId>
            <artifactId>spring-security-oauth2</artifactId>
        </dependency>
security.oauth2.resource.userInfoUri: http://localhost:9000/my-auth-server/user
@Configuration
@EnableAuthorizationServer
public class OAuth2Config extends AuthorizationServerConfigurerAdapter {

    @Autowired
    @Qualifier("userDetailsService")
    private UserDetailsService userDetailsService;

    @Autowired
    private AuthenticationManager authenticationManager;

    @Value("${gigsterous.oauth.tokenTimeout:3600}")
    private int expiration;

    // password encryptor
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer configurer) throws Exception {
        configurer.authenticationManager(authenticationManager);
        configurer.userDetailsService(userDetailsService);
    }

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.inMemory().withClient("gigsterous").secret("secret").accessTokenValiditySeconds(expiration)
                .scopes("read", "write").authorizedGrantTypes("password", "refresh_token").resourceIds("resource");
    }

}
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    /**
     * Constructor disables the default security settings
     */
    public WebSecurityConfig() {
        super(true);
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/login");
    }

    @Bean
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }

}

一切工作正常,我可以获得一个访问令牌,并使用它从我的资源服务器获得受保护的资源:

curl -X POST --user 'my-client-id:my-client-secret' -d 'grant_type=password&username=peter@hotmail.com&password=password' http://localhost:9000/my-auth-server/oauth/token

但是,我不知道如何处理注销(一旦用户决定注销,就使令牌无效)。我假设会提供一些endpoint来使令牌无效,或者我必须创建自己的endpoint来处理它?我不需要指定任何类型的令牌存储beans,所以我不确定如何使当前令牌无效。我很乐意看到任何见解--我找到的大多数教程都解释了如何使用会话或JWT令牌处理这一问题。

共有1个答案

全流觞
2023-03-14

我有这个问题,并在这个帖子上发布了一个解决方案

它基本上是在从客户端应用程序注销后重定向到授权服务器上的一个endpoint,然后在那里以编程方式注销。

 类似资料:
  • 问题内容: 我正在考虑为我的应用程序使用OAuth2。我尝试实现的体系结构如下: 我将拥有自己的(仅此)授权服务器 一些资源应用程序使用授权服务器验证对资源的访问 某些客户端应用程序(网络,移动设备)会将用户重定向到授权服务器进行身份验证,如果成功,则会在资源应用程序上使用api。 到目前为止,我已经成功实现了3个基本应用程序(1个身份验证服务器,1个资源服务器和1个客户端)之间的交互。我无法正常

  • 问题内容: 是否可以检测PC何时注销。我需要开发一个应用程序,在PC注销之前,该应用程序将有关注销时间的文本文档写入文本。 问题答案: 对于.NET,请参见以下问题:[c#中是否有方法可以检测Windows关闭/注销并取消该操作(询问用户之后)http://codingdict.com/questions/159553)

  • 我在Spring Security上遇到了麻烦。我可以登录但不能注销(至少不是按预期)。 登录后,我将被重定向到/secure/home.xhtml 这里是迄今为止的代码: 索引.xhtm spring-security.xhtml, http conf 这是我试图在stackoverflow上实现有关其他答案的注销的方式: 但这两个链接都不起作用。我得到了404。我还读到你应该替换请求。带有pa

  • 我在ADFS上有saml。一切正常,但我有不止一个依赖方的信任。然后,当我登录到我的一个webapp(信赖方信任)并注销时,一切都很好。 但当我登录到第一个web应用程序,然后再登录到第二个web应用程序时,我可以在ADF上使用cookie:samleSession,它结合了两个会话,然后当我从第一个web应用程序注销时,我会重定向到第二个web应用程序上的注销页面,并且不会删除网站1上的cook

  • 我正在用Firebase设置身份验证。我成功登录了,但当我注销时,我的应用程序崩溃了 我在activity_menu上创建菜单。菜单项名为log_out。如果用户单击此项,则必须注销 我尝试这段代码查看错误,但它没有显示给我 我以为它是成功运行的,我没有看到任何错误。我怎么知道呢?