我想使用Spring Security进行JWT身份验证.但它带有默认身份验证.我试图禁用它,但是这样做的旧方法 - 禁用它application.properties
- 在2.0中已弃用.
这是我试过的:
@Configuration
public class StackWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic().disable();
// http.authorizeRequests().anyRequest().permitAll(); // Also doesn't work.
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能简单地禁用基本安全性?
更新
可能很高兴知道我不使用web mvc而是web flux.
spring-security spring-boot spring-security-rest spring-webflux
我使用JWT开发了基于令牌的弹簧安全性,在git https://github.com/szerhusenBC/jwt-spring-security-demo中引用了这个项目.现在我需要在我的应用程序中登录facebook.对于社交登录,我找到了另一个网页https://ole.michelsen.dk/blog/social-signin-spa-jwt-server.html,它解释了如何进行社交登录.
在正常登录中,我的JWT项目根据用户名,密码,到期日期和创建时间创建一个令牌.每次令牌到来时,都会检索上述字段中的所有值并进行比较以验证令牌然后提供服务.我有两个问题:
如果有任何好的网站可以在春季启动应用中使用JWT进行社交登录,请告诉我.
我正在为Grails微服务联合设计一个API网关.此问题似乎与此存储库中已提交的一系列问题有关,但没有提供解决方案.
compile 'org.grails.plugins:spring-security-core:3.1.2'
compile "org.grails.plugins:spring-security-rest:2.0.0.M2"
Run Code Online (Sandbox Code Playgroud)
我正在使用spring security rest插件进行令牌身份验证.我正在通过返回ROLE_NO_ROLES
所有用户来自己做授权部分getAuthorities()
.我拦截所有请求并根据我自己在DB中存储的授权模式授权访问.
通过这些配置和策略,当我在本地系统上运行时,我的代码可以正常工作.当我在服务器上将其作为war文件在tomcat中部署时,它适用于所有对网关的请求,即对模式的所有请求/umm/controller/action
.Spring安全上下文就在那里,用户得到了完美的评估.
当我尝试通过重定向与表单的请求调用其他微服务/umm/microservice/controller/action
,springSecurityService.getCurrentUser()
并springSecurityService?.principal?.username
开始返回null.虽然我的令牌得到了完美的评估,但我没有得到任何安全上下文.
有关详细信息,请查看此问题.上述问题中还提供了复制错误的详细信息.整个项目在这里可用.
我尝试在我的本地机器上的Tomcat中部署我的战争.这个问题和这个问题提供了以下解决方案
grails.plugin.springsecurity.sch.strategyName = org.springframework.security.core.context.SecurityContextHolder.MODE_INHERITABLETHREADLOCAL
到目前为止似乎没有任何工作.无论如何都要SecurityContextHolder
回来null
了.所有用户检索的功能SpringSecurityService
.getCurrentUser()
,getPrincipal()
,getAuthentication()
并loadCurrentUser()
返回null.
为了缩小问题范围,我使用了执行独立战争
java -Dgrails.env=prod -jar build/libs/mywar-0.1.war
Run Code Online (Sandbox Code Playgroud)
现在对于任何非umm请求,我得到一个404, page not found
.我认为问题在于生产环境.该应用程序在开发中完全正常.
也试过grails run-app
哪个工作正常.为了排除生产环境的问题,我使用grails …
Spring安全配置类
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{
@Autowired
private UserDetailsService userDetailsService;
@Bean
public PasswordEncoder getPasswordEncoder() {
return new BCryptPasswordEncoder();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.cors()
.and()
.authorizeRequests()
.antMatchers("/user", "/login").permitAll()
.antMatchers("/employee", "/insurance").hasRole("User")
.anyRequest()
.authenticated()
.and()
.httpBasic()
.and()
.csrf().disable();
}
protected void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(getPasswordEncoder());
}
}
Run Code Online (Sandbox Code Playgroud)
UserDetailsService 实现类
@Service
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
private UserService userService;
@Override
public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException {
User user = null;
Set<GrantedAuthority> …
Run Code Online (Sandbox Code Playgroud) spring spring-security basic-authentication spring-boot spring-security-rest
我试图在我的grails应用程序中集成spring security rest插件版本1.4.1,但面对一些问题,我这样做:
Config.groovy设置:
//login end point
grails.plugin.springsecurity.rest.login.active=true
grails.plugin.springsecurity.rest.login.endpointUrl='/api/login'
grails.plugin.springsecurity.rest.login.failureStatusCode='401'
//for memcached
grails.plugin.springsecurity.rest.token.storage.useMemcached=true
grails.plugin.springsecurity.rest.token.storage.memcached.hosts='localhost:11211'
grails.plugin.springsecurity.rest.token.storage.memcached.username=''
grails.plugin.springsecurity.rest.token.storage.memcached.password=''
grails.plugin.springsecurity.rest.token.storage.memcached.expiration=3600
//logout endpoint
grails.plugin.springsecurity.rest.logout.endpointUrl='/api/logout'
grails.plugin.springsecurity.rest.token.validation.headerName='X-Auth-Token'
//accept request params as map
grails.plugin.springsecurity.rest.login.useRequestParamsCredentials=true
grails.plugin.springsecurity.rest.login.usernamePropertyName='username'
grails.plugin.springsecurity.rest.login.passwordPropertyName='password'
Run Code Online (Sandbox Code Playgroud)
和
grails.plugin.springsecurity.filterChain.chainMap = [
'/api/guest/**': 'anonymousAuthenticationFilter,restExceptionTranslationFilter,filterInvocationInterceptor',
'/api/**': 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter', // Stateless chain
'/**': 'JOINED_FILTERS,-restTokenValidationFilter,-restExceptionTranslationFilter' // Traditional chain
]
Run Code Online (Sandbox Code Playgroud)
从设置我可以看到我正在使用Memcache进行令牌存储,当我api/login
通过休息客户端点击url时,我得到了401我启用了日志,其中显示未找到身份验证提供程序
这是日志:
2015-04-03 23:30:31,030 [http-bio-8080-exec-8] DEBUG matcher.AntPathRequestMatcher - Checking match of request : '/api/login'; against '/api/guest/**'
2015-04-03 23:30:31,031 [http-bio-8080-exec-8] DEBUG matcher.AntPathRequestMatcher - Checking match of request : …
Run Code Online (Sandbox Code Playgroud) rest grails spring-security access-token spring-security-rest
我使用Spring Security OAuth 2.0和JWT为我的身份验证服务器实现了密码授予.我通过扩展AuthorizationServerConfigurerAdapter来创建服务器.我能够给服务器一个用户名/密码并获得一个JWT令牌.我使用ResourceConfiguration扩展其他服务上的ResourceServerConfigurerAdapter类,以便在进行Web服务调用时验证JWT.贴在下面是我的代码.
我想让我的Native Mobile应用程序能够使用Facebook,Gmail,Linked等登录...我想按照所附文章中的步骤操作:
https://ole.michelsen.dk/blog/social-signin-spa-jwt-server.html
我在网上搜索了符合我标准的解决方案,但我找不到任何解决方案.我的要求合理吗?是否有更简单的方法,允许用户通过用户名/密码和社交媒体身份验证登录,同时获取JWT令牌.我发现的一个例子使用OAuth2ClientAuthenticationProcessingFilter来执行上面提到的逻辑,但我不知道OAuth2ClientAuthenticationProcessingFilter是如何工作的,并且找不到任何文档.如果某人必须使用类似的技术堆栈实现类似的要求,请告诉我您用于实施此解决方案的技术.
在身份验证服务器上:
@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private UserDetailsService userDetailsService;
@Value("${clientId}")
private String clientId;
@Value("${clientSecret}")
private String clientSecret;
@Value("${jwtSigningKey}")
private String jwtSigningKey;
@Value("${accessTokenValiditySeconds}")
private String accessTokenValiditySeconds;
@Value("${refreshTokenValiditySeconds}")
private String refreshTokenValiditySeconds;
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public JwtAccessTokenConverter accessTokenConverter(){
JwtAccessTokenConverter accessTokenConverter = new JwtAccessTokenConverter();
accessTokenConverter.setSigningKey(jwtSigningKey);
return accessTokenConverter;
}
@Bean
public TokenStore tokenStore() …
Run Code Online (Sandbox Code Playgroud) single-sign-on jwt spring-boot spring-security-oauth2 spring-security-rest
我正在尝试按照这篇文章的说明使用 grails-spring-security-rest 插件构建我的第一个 grails 应用程序。
但是,当我尝试运行该应用程序时,它会给出以下输出:
| Running application...
2017-05-07 20:18:54.614 WARN --- [ main] g.p.s.SpringSecurityCoreGrailsPlugin :
Configuring Spring Security Core ...
Configuring Spring Security Core ...
2017-05-07 20:18:54.688 WARN --- [ main] g.p.s.SpringSecurityCoreGrailsPlugin : ... finished configuring Spring Security Core
... finished configuring Spring Security Core
Configuring Spring Security REST 2.0.0.M2...
... finished configuring Spring Security REST
... with GORM support
2017-05-07 20:19:00.278 DEBUG --- [ost-startStop-1] o.s.s.w.a.i.FilterSecurityInterceptor : Validated configuration attributes
2017-05-07 20:19:00.527 DEBUG --- [ost-startStop-1] g.p.s.r.t.g.jwt.FileRSAKeyProvider : …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个Spring Boot Web应用程序。问题出在登录方案中。假设我有一个用用户名“ Ali”注册的用户。该用户可以使用用户名“ Ali”或“ ali”登录。下面的代码代表了我的spring安全配置类。似乎在比较时,Spring Boot不会检查大写小写因子,但我希望对其进行检查。
软件包ir.saafta.conf; 导入ir.saafta.repo.EventRepository; 导入org.springframework.beans.factory.annotation.Autowired; 导入org.springframework.boot.web.servlet.ServletListenerRegistrationBean; 导入org.springframework.context.annotation.Bean; 导入org.springframework.context.annotation.Configuration; 导入org.springframework.http.HttpMethod; 导入org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.session.SessionRegistry; import org.springframework.security.core.session.SessionRegistryImpl; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.authentication.AuthenticationFailureHandler; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler; import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; import org.springframework.security.web.header.writers.StaticHeadersWriter; import org.springframework.security.web.session.HttpSessionEventPublisher; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import javax.sql.DataSource; /** * Created by reza on 11/12/16. */ @Configuration public class SecurityConf extends WebSecurityConfigurerAdapter { @Autowired private DataSource datasource; @Autowired private EventRepository eventRepository; // Register …
我有使用客户端 ID 和密钥从 websec 生成的访问令牌。
我的项目 app.properties 有 jwt 公钥。
我正在开发 Rest api ,调用 Rest api 将提供我想使用 jwt 公钥进行验证的 Bear 令牌(生成的)。
但是Spring Security内部使用内存令牌验证器并返回无效令牌。
那么我如何使用 jwt 公钥来验证不记名令牌。
或者说我在这里缺乏一些理解。
spring spring-security spring-boot spring-security-oauth2 spring-security-rest
我有一些用户正在使用有效的 JWT 令牌访问一些 API,但是因为他们的任务花费的时间比令牌过期时间长得多,当他们再次访问 API 时,JWT 令牌已经过期。他们不应该刷新他们的令牌,他们必须使用相同的令牌并使用过期的令牌访问某些 API。
我正在使用spring.security.oauth2.resourceserver
与我们的授权服务器进行身份验证。
因此,我想要实现的是,如果令牌来源正确并且格式良好,即使令牌已过期,我也需要接受请求。
是的,我知道这似乎不是一个好方法,但如果可能,请教育我。
我已经ClientHttpRequestInterceptor
从这里阅读并深入研究了 的源代码,resource server
但找不到合适的方法。
spring-security jwt spring-boot spring-security-oauth2 spring-security-rest
spring-boot ×6
spring ×4
jwt ×3
grails ×2
access-token ×1
facebook ×1
grails3 ×1
groovy ×1
rest ×1
tomcat8 ×1