2

我在我的机器上创建了一个 Web 服务。它的网址是

http://localhost:8080/aaa/test?wsdl

我想为其启用一项功能。一旦用户在浏览器中输入 url,它应该要求提供凭据。它可以在Web服务中完成。

如果是,有人可以指导如何实现它。

谢谢。

4

1 回答 1

3

如果您已经在使用 Spring,则可以使用 Spring Security 轻松地将基本身份验证应用于特定的 URL 模式。在您的applicationContext.xml中,只需添加:

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

<!-- HTTP basic authentication in Spring Security -->
<http>
    <intercept-url pattern="/*wsdl?" access="ROLE_USER" />
    <http-basic />
</http>

<authentication-manager>
   <authentication-provider>
       <user-service>
       <user name="someUser" password="somePassword" authorities="ROLE_USER" />
       </user-service>
   </authentication-provider>
</authentication-manager>

</beans:beans>

示例取自Mkyong 的Spring Security HTTP Basic Authentication Example

如果您想在数据库中查找用户,则需要使用不同的身份验证提供程序。如果您想查询标准 Spring Security 用户数据表Spring Security 参考中提到。如果您已经有了自己的结构,您可能有兴趣改用它,您可以自己在其中查找用户。data-source-refuser-service-ref

<authentication-manager>
  <authentication-provider user-service-ref='myUserDetailsService'/>
</authentication-manager>

<beans:bean id="myUserDetailsService"
    class="mypackage.MyUserDetailsService">
  <beans:property name="dataSource" ref="dataSource"/>
</beans:bean>

mypackage.MyUserDetailsService以及扩展JdbcDaoImpl和实现的代码UserDetailsService

于 2013-01-18T10:33:33.817 回答