小编Jér*_*mie的帖子

spring-security-oauth2 2.0.7刷新令牌UserDetailsS​​ervice配置 - UserDetailsS​​ervice是必需的

请问有关spring-security-oauth2 2.0.7的配置问题.我通过GlobalAuthenticationConfigurerAdapter使用LDAP进行身份验证:

@SpringBootApplication
@Controller
@SessionAttributes("authorizationRequest")
public class AuthorizationServer extends WebMvcConfigurerAdapter {

    public static void main(String[] args) {
        SpringApplication.run(AuthorizationServer.class, args);
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/login").setViewName("login");
        registry.addViewController("/oauth/confirm_access").setViewName("authorize");
    }

    @Configuration
    public static class JwtConfiguration {

        @Bean
        public JwtAccessTokenConverter jwtAccessTokenConverter() {
            JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
            KeyPair keyPair = new KeyStoreKeyFactory(
                    new ClassPathResource("keystore.jks"), "foobar".toCharArray())
                    .getKeyPair("test");
            converter.setKeyPair(keyPair);
            return converter;
        }

        @Bean
        public JwtTokenStore jwtTokenStore(){
            return new JwtTokenStore(jwtAccessTokenConverter());
        }
    }


    @Configuration
    @EnableAuthorizationServer
    public static class OAuth2Config extends AuthorizationServerConfigurerAdapter implements EnvironmentAware {

        private static …
Run Code Online (Sandbox Code Playgroud)

spring spring-security spring-security-ldap spring-security-oauth2

9
推荐指数
2
解决办法
6067
查看次数

使用spring-session和spring-cloud-security时,在Redis中不保留OAuth2ClientContext(spring-security-oauth2)

非常感谢您提前阅读这个问题.

建立

我在用:

  • spring-security-oauth2:2.0.7.RELEASE
  • spring-cloud-security:1.0.1.RELEASE
  • spring-session:1.0.1.RELEASE

并且在单一登录(),反向代理()网关中spring-security-oauth2 OAuth2ClientContext使用spring-session(via @EnableRedisHttpSession)时,会有一个关于Redis数据存储区中持久性的问题.@EnableOAuth2Sso@EnableZuulProxy

问题

在我看来,创建的SessionScopedJdkDynamicAopProxied 未正确保存在Redis数据存储区中.DefaultOAuth2ClientContextorg.springframework.cloud.security.oauth2.client.OAuth2ClientAutoConfiguration

@Configuration
@ConditionalOnBean(OAuth2SsoConfiguration.class)
@ConditionalOnWebApplication
protected abstract static class SessionScopedConfiguration extends BaseConfiguration {

    @Bean
    @Scope(value = "session", proxyMode = ScopedProxyMode.INTERFACES)
    public OAuth2ClientContext oauth2ClientContext() {
        return new DefaultOAuth2ClientContext(accessTokenRequest);
    }

}
Run Code Online (Sandbox Code Playgroud)

调试oauth2ClientContextwithout 的创建@EnableRedisHttpSession表明(如预期的那样)bean将在每个客户端会话中实例化一次并存储在HttpSession.然后,这个实例将被重用存储获取的OAuth2 bearerToken除了存储的OAuth2细节accessToken在春天SecurityContextorg.springframework.security.core.Authentication.

但是,一旦使用@EnableRedisHttpSession,oauth2ClientContextbean将首先在会话创建时创建,但也将在稍后创建(同时仍使用相同的客户端会话).调试Redis客户端会话内容可确认oauth2ClientContext会话创建未正确保留:

在我们检索OAuth2之前bearerToken(NO SpringContext,NO scopedTarget.oauth2ClientContext):

~$ …
Run Code Online (Sandbox Code Playgroud)

spring-security spring-security-oauth2 spring-session spring-cloud

9
推荐指数
1
解决办法
4156
查看次数

RegEx:捕获整个组内容

我正在为一些Oracle命令编写解析器,比如

LOAD DATA
  INFILE  /DD/DATEN
TRUNCATE
PRESERVE BLANKS
INTO TABLE aaa.bbb
( some parameters... )
Run Code Online (Sandbox Code Playgroud)

我已经创建了一个匹配整个命令的正则表达式.我现在正在寻找一种捕获输入文件名称的方法(例如"/ DD/DATEN").我的问题是使用以下正则表达式只会返回第一组的最后一个字符("N").

^\s*LOAD DATA\s*INFILE\s*(\w|\\|/)+\s*$
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

Debuggex演示

有任何想法吗?提前谢谢了

编辑:关于@HamZa的问题,这里将是解析Oracle LOAD DATA INFILE命令的整个正则表达式 (虽然简化):

^\s*LOAD DATA\s*INFILE\s*((?:\w|\\|/)+)\s*((?:TRUNCATE|PRESERVE BLANKS)\s*){0,2}\s*INTO TABLE\s*((?:\w|\.)+)\s*\(\s*((\w+)\s*POSITION\s*\(\s*\d+\s*\:\s*\d+\s*\)\s*((DATE\s*\(\s*(\d+)\s*\)\s*\"YYYY-MM-DD\")|(INTEGER EXTERNAL)|(CHAR\s*\(\s*(\d+)\s*\)))\s*\,{0,1}\s*)+\)\s*$
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

Debuggex演示

regex parsing

5
推荐指数
1
解决办法
97
查看次数