请问有关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
非常感谢您提前阅读这个问题.
我在用:
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
在我看来,创建的SessionScoped
JdkDynamicAopProxied 未正确保存在Redis数据存储区中.DefaultOAuth2ClientContext
org.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)
调试oauth2ClientContext
without 的创建@EnableRedisHttpSession
表明(如预期的那样)bean将在每个客户端会话中实例化一次并存储在HttpSession
.然后,这个实例将被重用存储获取的OAuth2 bearerToken
除了存储的OAuth2细节accessToken
在春天SecurityContext
的org.springframework.security.core.Authentication
.
但是,一旦使用@EnableRedisHttpSession
,oauth2ClientContext
bean将首先在会话创建时创建,但也将在稍后创建(同时仍使用相同的客户端会话).调试Redis客户端会话内容可确认oauth2ClientContext
会话创建未正确保留:
在我们检索OAuth2之前bearerToken
(NO SpringContext,NO scopedTarget.oauth2ClientContext
):
~$ …
Run Code Online (Sandbox Code Playgroud) spring-security spring-security-oauth2 spring-session spring-cloud
我正在为一些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)
有任何想法吗?提前谢谢了
编辑:关于@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)