当前位置: 首页 > 知识库问答 >
问题:

Spring安全。自定义身份验证管理器

长孙弘壮
2023-03-14

我有Springmvc应用程序。我添加了带有CustomAuthentiationManager的Spring Security。这是appC中包含的application-security.xmlontex.xml.login.jsp我使用带有2个输入的标准登录页面:name='j_username'

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
    xmlns:p="http://www.springframework.org/schema/p" xmlns:security="http://www.springframework.org/schema/security"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
                        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">


<bean id="loginPassAuthenticationFilter"
    class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter">
    <property name="authenticationManager" ref="customAuthenticationManager" />
    <property name="allowSessionCreation" value="true" />
    <property name="filterProcessesUrl" value="/j_spring_security_check" />
    <property name="authenticationFailureHandler" ref="customAuthenticationFailureHandler" />
    <property name="authenticationSuccessHandler" ref="customAuthenticationSuccessHandler" />
</bean>

<bean id="customAuthenticationManager"
    class="com.whatever.security.CustomAuthenticationManager" />
<bean id="authenticationFilter"
    class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter"
    p:authenticationManager-ref="customAuthenticationManager"
    p:authenticationFailureHandler-ref="customAuthenticationFailureHandler"
    p:authenticationSuccessHandler-ref="customAuthenticationSuccessHandler" />

<bean id="customAuthenticationFailureHandler"
    class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler"
    p:defaultFailureUrl="/?error=true" />

<bean id="customAuthenticationSuccessHandler"
    class="org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler"
    p:defaultTargetUrl="/" />

<bean id="authenticationEntryPoint"
    class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint"
    p:loginFormUrl="/" />
<security:authentication-manager />
<bean id="passwordEncoder"
    class="org.springframework.security.authentication.encoding.ShaPasswordEncoder">
    <constructor-arg value="512" />
</bean>
<form name='f' action="<c:url value='j_spring_security_check' />"
    method='POST'>
    <table>
        <tr>
            <td>User:</td>
            <td><input type='text' name='j_username' value=''></td>
        </tr>
        <tr>
            <td>Password:</td>
            <td><input type='password' name='j_password' /></td>
        </tr>
        <tr>
            <td colspan='2'><input name="submit" type="submit"
                value="submit" /></td>
        </tr>
        <tr>
            <td colspan='2'><input name="reset" type="reset" /></td>
        </tr>
    </table>
</form>

共有1个答案

牟嘉
2023-03-14

我建议使用安全命名空间(链接到最小配置的示例):
http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#ns-最小值

此处链接您如何定义自己的身份验证提供程序:http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#ns-身份验证管理器

创建您自己的身份验证提供程序可以解决大多数用例。如果您需要任何额外的澄清,请告诉我。

最好的问候,

迈克尔

 类似资料:
  • 我在spring MVC项目中实现了一个自定义身份验证提供程序。在我自己的重载authenticate()方法中,我实现了自己的身份验证,其中我构造了自己的UserPasswordAuthenticationToken()并返回对象。 现在,上述对象“UserPasswordAuthentictionToken”中的用户ID被匿名化,密码为null,权限设置为授予该用户的权限。 问题: 这是否会导

  • 我们希望使用外部身份提供者将现有的Spring Security项目从自定义用户名/密码实现(UserDetailsService等)迁移到oauth2登录。 但是,当通过外部提供程序登录时,安全上下文中的身份验证对象是一个,主体是一个。 由于我们在应用程序中使用的都是自定义身份验证主体,因此我们希望将转换为自定义对象。 对于oauth2资源服务器,似乎有一个API可让您将JWtAuthentia

  • 我在Spring MVC web应用程序中遇到了一个困难的场景。 我的应用程序正在使用LDAP身份验证。当我在外部CAN环境中托管此应用程序时,身份验证失败,因为我的组织没有公共LDAP url。由于安全原因,它们没有公共LDAP url。 有没有可能,我在我的组织网络中创建了一个身份验证服务,并且每次用户试图身份验证时,我的应用程序都会点击该服务?? 如何将身份验证与应用程序分离?

  • 我正在使用带有Spring启动的OAuth2。我是奥斯的新手。我得到了这个 考虑在运行我的 Spring 启动应用程序时在您的配置异常中定义类型为“org.springframework.security.authentication.AuthenticationManager”的 bean。我在StackOverflow中看到了其他一些问题的答案,但它们并没有满足我的需求。我正在使用 Sprin

  • 问题内容: 我正在为Angular 5应用程序创建API。我想使用JWT进行身份验证。 我想使用Spring Security提供的功能,以便我可以轻松地使用角色。 我设法禁用基本身份验证。但是使用时我仍然会收到登录提示。 我只想输入403而不是提示。因此,通过检查令牌标题的“事物”(是否是过滤器?)来覆盖登录提示。 我只想在将返回JWT令牌的控制器中进行登录。但是我应该使用哪种Spring Se