基于表单的身份验证在Spring安全性中如何工作?

时间:2015-09-28 07:28:01

标签: java spring http spring-security form-authentication

post个请求发送到某个/login个网址,其中包含有效的usernamepassword个参数。

应该回应什么?它必须包含jsessionid或/和其他信息吗?

Spring安全性如何识别当前用户?它是使用jsessionid过滤还是“查看”其他信息(客户标题,Cookie等)?通过“jsessionid过滤”我的意思(可能是错误的)当用户登录成功弹出安全保存jsessionid到成功的身份验证会话列表并保存其他信息(如角色) )进入会话对象。它是否有效?

如果有人通过身份验证逐步提供原始 http请求/响应,那将是很好的,例如post请求应该包含什么以及相应的响应包含什么。此外,对安全资源的请求需要包含(某些标题,cookie,jsession或其他)?

1 个答案:

答案 0 :(得分:2)

我会尽力帮助你:

第一个:响应为该路径设置了一个cookie,在我的情况下,我的应用程序位于localhost:port/CambioClaveDist,因此当SpringSecurity对我的用户进行身份验证时,它会为该路径创建一个新的JSESSIONID: Set-Cookie:"JSESSIONID=96ABDF25EE278DD69DD1A0400702E416; Path=/CambioClaveDist"

第二: Spring使用JSESSIONID识别经过身份验证的用户,是的。

第三:我有一个http请求/帖子示例:
身份验证帖子:

POST http://localhost:8080/CambioClaveDist/j_spring_security_check
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://localhost:8080/CambioClaveDist/index.htm?logout=true
Connection: keep-alive

Content-Type: application/x-www-form-urlencoded
Content-Length: 92

_csrf=fbd07004-cc30-4ef6-9bfb-a00ae8f8819f&username=user&password=pass&sSubmit=Enviar

请求受保护的网址:

GET http://localhost:8080/CambioClaveDist/main/index.htm

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://localhost:8080/CambioClaveDist/index.htm?logout=true
Cookie: JSESSIONID=96ABDF25EE278DD69DD1A0400702E416
Connection: keep-alive