当前位置: 首页 > 面试题库 >

如何使用cURL登录到Spring Security登录表单?

卓致远
2023-03-14
问题内容

我正在一个springMVC项目中,其中用户身份验证基于Spring安全性。

这个想法是要拥有一个移动(android)应用程序,以便能够将某种数据发送到后端。

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

我们网站上的登录表单如下:

http://localhost:8080/app/user/login

我使用以下命令:

curl -F 'username=admin&password=admin' http://localhost:8080/app/user/login

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

只需注意:对于每一个请求,spring secure将创建类似于以下内容的随机令牌:

8863F732ADDE24CD167F4EF502A4333D

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


问题答案:

cURL像这样使用:

 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令牌。Spring
Security的默认令牌参数名称为_csrf,如果您进行了更改,则还需要更改grep csrf

curl --cookie-jar cookie -L http://localhost:8080/app/j_spring_security_check  | grep csrf

然后,您可以执行下一个命令,该命令将传递文件中的所有cookie。别忘了用上|your_token_value|一个命令打印出的实际值替换(_csrf如果您更改了它,则返回参数名)。

curl --cookie cookie -d "j_username=admin&j_password=admin&_csrf=|your_token_value|" -L http://localhost:8080/app/j_spring_security_check

从Spring Security 3.x到4.x

请注意,在春季安全4.x的缺省值login-processing-url从更改/j_spring_security_check为POST
/login,默认值username-parameter从改变j_usernameusername的并且默认值password- parameter从变化j_passwordpassword。如果应用程序显式提供了这些属性,则迁移不需要任何操作。



 类似资料:
  • 问题内容: 我一直在尝试使用curl登录barnesandnoble.com移动网站,到目前为止还没有运气。我返回的页面没有任何错误,它再次将我的电子邮件默认设置为登录页面的电子邮件输入表单框(使用print $ result返回的表单)。 通过更改LOGINURL指向eBay的登录名,相同的代码实际上可以使我正确地进入ebay。 唯一的区别是barnesandnobles是https://,而e

  • 问题内容: 我是使用cURL的新手,它很难为其找到好的资源。我想做的是通过curl来登录到远程站点,然后执行登录表单,然后将其发送回去。 我拥有的代码似乎无效,仅尝试显示网站的主页。 我究竟做错了什么。在此工作之后,我想重定向到另一个页面并从我的网站获取内容。 问题答案: 我已经放弃了好一阵子,但后来又重新讨论了。由于这个问题是定期查看。最终,这就是我最终使用的对我有用的东西。 更新:此代码绝不打

  • 我尝试使用这个简单的代码登录,但在我点击登录按钮后,else选项“无效用户名或密码!”总是出现,即使用户名和密码是匹配的 控制器:

  • 我有一个在Java设计的应用程序,我愿意使用用户名和密码登录AWS。我知道如何使用这里定义的默认安全凭据,但它对我的应用程序需求无效。有没有办法使用用户名和密码使用JavaAPI登录我的AWS帐户?

  • springsecurity oauth2.0 谁做过记录登录日志?监听事件好像没法区分是什么原因失败的、比如client错误还是用户名错误

  • 我一直在关注symfony网站上的教程(http://symfony.com/doc/current/security.html)为我的Symfony 3.1项目添加登录名。它可以与HTTP基本身份验证一起工作,但是当我使用这里的教程添加form_登录时(http://symfony.com/doc/current/security/form_login_setup.html)它会一直重定向到登录