gpt4 book ai didi

Java SpringSecurity 使用HTML GET参数自动登录

转载 作者:行者123 更新时间:2023-11-30 09:15:29 26 4
gpt4 key购买 nike

我想自动登录到 Web 应用程序,该应用程序可在公司的 Intranet 上访问。

登录将以一种方式起作用,即当用户访问应用程序时,他将自动发送其凭据(用户名和密码),例如 (company.com/myapplication/login?user=jhon&pass=123)。

我如何使用 HTML 表单代替标准的 Spring Security 登录?也许使用隐藏的形式,然后填充 GET 参数?我找不到该场景的任何示例。

我的部分仅在用户发送带参数的链接之后。

最佳答案

您可以通过两种方式(或更多方式)做到这一点。 (在我们发表评论后,您似乎需要采用第二种方式,因为您没有用户名和密码)

第一种方式:

使用标准的 spring 表单登录,然后修改您的应用程序,以便像普通的 Web 表单登录一样发送登录请求。

假设您已经配置了 login-processing-url="/login/j_spring_security_check"

<security:form-login
login-processing-url="/login/j_spring_security_check"
login-page="/login"
authentication-failure-url="/login?login_error=t" />

然后发送一个

使用两个 POST 参数将 HTTP POST 发送到 https://yourApplication/login/j_spring_security_check

 j_username=<login>
j_password=<password>

第二种方式:

编写您自己的身份验证处理过滤器。这是一个扩展 AbstractAuthenticationProcessingFilter 的类,它负责

  • 从请求中获取用户用于验证的内容(通常是用户名和密码),
  • 从中形成一些用户身份验证 token 对象(例如 UsernamePasswordAuthenticationToken)
  • 并使用此身份验证 token 调用AuthenticationManager.authenticate(Authentication authentication)

要注册你的过滤器,你只需要将它们添加到 spring security 过滤器链中:

<security:custom-filter ref="yourFilter" after="FORM_LOGIN_FILTER"/>

我建议查看 UsernamePasswordAuthenticationFitler(并记住它是扩展 AbstractAuthenticationProcessingFilter)- 这将对其进行最好的解释。

如果您没有用户名和密码,那么您需要创建自己的 token (扩展Authentication),然后您必须实现自己的AuthenticationProvider(和向 AuthenticationManager 注册)。 AuthenticationProvider 负责 - 使用(特殊类型的)身份验证 token 和 - 验证身份验证 token 中的内容是否有效 - 使用 UserDetails 和 Privileges 创建一个 OTHER Authentication 对象 - 或者,如果身份验证 token 无效,则抛出 AuthenticationException

查看 AbstractUserDetailsAuthenticationProvider 及其子类作为示例。

关于Java SpringSecurity 使用HTML GET参数自动登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19892512/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com