Spring登录任何细节

时间:2013-01-23 15:52:48

标签: java spring spring-security spring-ws

有没有人知道在Spring中实现一个在登录时会接受任何用户的用户服务或身份验证提供程序?

这是我之前的问题:spring-ws get username & password

我在spring-ws项目中有一个基本的安全设置:

<security:http auto-config="true">
    <security:intercept-url pattern="/**" access="ROLE_USER" />
    <security:intercept-url pattern="/*.wsdl" access="ROLE_USER" />
    <security:http-basic/>
</security:http>

<security:authentication-manager erase-credentials="false">
    <security:authentication-provider user-service-ref="userService">
        <security:user-service>
            <security:user name="me" password="mypass"
                authorities="ROLE_USER" />
        </security:user-service>
    </security:authentication-provider>
</security:authentication-manager>

我不想在用户服务中指定用户,我希望有任何详细信息的用户可以访问,我只是想确保用户提供用户名和密码,并确保我可以从SecurityContextHolder

是否有必要实施我自己的用户服务或身份验证提供程序来执行此操作?如果有,是否可以指向示例的方向或向我提供一个?

谢谢!

3 个答案:

答案 0 :(得分:1)

您需要提供自己的AuthenticationProvider,即org.springframework.security.authentication.AuthenticationProvider界面的实现。

<security:authentication-manager alias="authenticationManager">
  <security:authentication-provider ref="myProvider" />
</security:authentication-manager>

<bean id="myProvider" class="MyProvider"/>
然后,

MyProvider可以委托自定义UserDetailsService来设置作者(角色)或直接设置ROLE_USER

答案 1 :(得分:0)

如果你改变了

<security:http auto-config="true">

<security:http auto-config="true" use-expressions="true">

然后你可以设置你的拦截

<security:intercept-url pattern="/**" access="ROLE_USER" />
<security:intercept-url pattern="/*.wsdl" access="ROLE_USER" />

<security:intercept-url pattern="/**" access="isAuthenticated()" />
<security:intercept-url pattern="/*.wsdl" access="isAuthenticated()" />

允许任何经过身份验证的用户访问这些网址模式。

答案 2 :(得分:0)

您需要执行以下操作:

配置拦截URL以提供对任何角色名称的访问。您可以通过执行以下操作来执行此操作:

<security:http auto-config="true">
     <security:intercept-url pattern="/**" access="IS_AUTHENTICATED_REMEMBERED" />
     <security:intercept-url pattern="/*.wsdl" access="IS_AUTHENTICATED_REMEMBERED" />
     <security:http-basic/>
</security:http>

创建您自己的用户服务,为用户授予任何用户名和密码组合至少一个权限。 配置spring security以使用您创建的服务。

<bean id="userService" class="com.ek.UserService" />
<authentication-manager alias="authenticationManager">
    <authentication-provider user-service-ref="userService" />
</authentication-manager>

我希望这可以让您了解自己需要做什么。另外,我们可以为您创建示例代码。