春季安全令牌JWT
问题描述:
我使用Spring安全认证登录,我在securityContext.xml配置Spring安全春季安全令牌JWT
<http auto-config="false" use-expressions="true">
<intercept-url pattern="/**" access="hasRole('ROLE_DEV-TEAM')" />
<intercept-url pattern="/customerMgt/customers/admin/**" access="hasRole('ROLE_ADD-COMPANY')" />
<form-login login-page="/login" default-target-url="/main" always-use-default-target="true" authentication-failure-url="/login?error=1"/>
<session-management />
<logout logout-success-url="/login"/>
<!--remember-me /--> <!-- AlexR: I did not have much luck with it in the past and IMO it presents security risk under strict DOD, etc. requirements -->
</http>
<beans:bean name="passwordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>
<authentication-manager>
<ldap-authentication-provider
user-search-filter="(uid={0})"
user-search-base="ou=Users"
group-search-filter="(uniqueMember={0})"
group-search-base="ou=Groups"
group-role-attribute="cn"
role-prefix="ROLE_">
在LDAP将是数据库
更换而不是设置会话中的令牌和重定向客户端我想创建一个带令牌的自定义JWT并将其发送回客户端
答
Spring Security对令牌au没有开箱即用的支持用户鉴定。然而,这是非常可行的。您需要提供您自己的以下实现:
-
TokenAuthenticationFilter
- 验证为每个请求提供的请求标头中提供的JWT令牌。用它替换BasicAuthenticationFilter。 -
LoginController
- 验证定的凭据,并在响应头 -
JWTAuthenticationService
放置一个JWT令牌 - 处理令牌创建,加密,解密和有效性检查。由以上两者使用。
使用令牌认证时,您的安全上下文应该是无状态的,并且每个请求都会被TokenAuthenticationFilter
认证。因此,请将http安全性配置为stateless
会话管理和http403forbiddenentrypoint
。