首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用cURL登录到春季安全登录表单?

如何使用cURL登录到春季安全登录表单?
EN

Stack Overflow用户
提问于 2012-10-24 12:11:10
回答 6查看 20.8K关注 0票数 24

我正在从事一个springMVC项目,在该项目中,用户身份验证基于spring安全性。

这样做的目的是让移动(android)应用程序能够向后端发送某种数据。

因此,在着手开发android之前,我决定使用cURL来模拟登录表单的情况。

本网站的登入表格如下:

代码语言:javascript
运行
复制
http://localhost:8080/app/user/login

我使用以下命令:

代码语言:javascript
运行
复制
curl -F 'username=admin&password=admin' http://localhost:8080/app/user/login

但是,我将获得登录页面,换句话说,我无法通过基于模拟情况的用户身份验证。

请注意:对于每个请求,spring安全将创建一个随机令牌,类似于:

8863F732ADDE24CD167F4EF502A4333D

如何使用模拟情况( cURLHTTPClient)传递基于spring安全性的登录表单

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-10-24 13:31:31

像这样使用cURL

代码语言:javascript
运行
复制
 curl -d j_username=admin -d j_password=admin -L http://localhost:8080/app/j_spring_security_check

CSRF

如果您得到类似于Expected CSRF token not found. Has your session expired?的内容,这意味着启用了CSRF令牌保护。要用cURL测试它,您需要一个cookie和一个CSRF令牌本身。

下面的命令将将所有cookie写入名为cookie的文件,并输出CSRF令牌。Security默认令牌参数名为_csrf,如果您已经更改了它,那么也需要更改grep csrf

代码语言:javascript
运行
复制
curl --cookie-jar cookie -L http://localhost:8080/app/j_spring_security_check  | grep csrf

然后可以执行next命令,该命令将从文件中传递所有cookie。不要忘记用一个实际值替换|your_token_value|,该值由前面的命令打印出来(如果您更改了它,则使用_csrf参数名)。

代码语言:javascript
运行
复制
curl --cookie cookie -d "j_username=admin&j_password=admin&_csrf=|your_token_value|" -L http://localhost:8080/app/j_spring_security_check

从SpringSecurity3.x到4.x

注意,在SpringSecurity4.x中,login-processing-url的默认值从/j_spring_security_check变为POST /loginusername-parameter的默认值从j_username变为usernamepassword-parameter的默认值从j_password变为password。如果应用程序显式地提供了这些属性,则迁移不需要任何操作。

票数 25
EN

Stack Overflow用户

发布于 2012-10-24 12:17:42

您应该配置spring以支持基本身份验证。然后将以下标题添加到请求中:

  • 名称:Authorization
  • 价值:base64(username:password)

这意味着用户名和密码应该合并为一个字符串,其中包含:作为分隔符,然后使用BASE64转换进行转换。

票数 3
EN

Stack Overflow用户

发布于 2016-06-20 19:03:16

根据投票最多的答案,我编写了以下脚本:

代码语言:javascript
运行
复制
#!/usr/bin/env bash

curl --cookie-jar cookie -L http://localhost:PORT/secureDomain/secureURL

TOKEN=$( cat cookie | grep 'XSRF' | cut -f7 )

curl --cookie cookie -u admin:admin -d "_csrf=$TOKEN" -L http://localhost:PORT/secureDomain/secureURL

为Security 4工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13048954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档