2

有谁知道在 Spring 中实现用户服务或身份验证提供程序的方法,在登录时将接受任何用户?

这是对我之前的问题的进一步说明:spring-ws 获取用户名和密码

我的 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.

是否有必要实现我自己的用户服务或身份验证提供程序来执行此操作,如果是这样,任何人都可以指出一个示例的方向或为我提供一个示例吗?

谢谢!

4

3 回答 3

1

你需要提供你自己AuthenticationProviderorg.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直接设置。

于 2013-01-23T15:59:29.870 回答
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()" />

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

于 2013-01-24T03:16:15.830 回答
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>

我希望这能让你知道你需要做什么。否则,我们可以为您创建示例代码。

于 2013-01-24T09:12:42.447 回答