マシンに Web サービスを作成しました。そのURLは
http://localhost:8080/aaa/test?wsdl
1つの機能を有効にしたい。ユーザーがブラウザに URL を入力するとすぐに、資格情報を要求する必要があります。Web サービスで実行できますか。
はいの場合、誰かがそれを達成する方法を案内できますか。
ありがとう。
マシンに Web サービスを作成しました。そのURLは
http://localhost:8080/aaa/test?wsdl
1つの機能を有効にしたい。ユーザーがブラウザに URL を入力するとすぐに、資格情報を要求する必要があります。Web サービスで実行できますか。
はいの場合、誰かがそれを達成する方法を案内できますか。
ありがとう。
すでにSpringを使用している場合は、SpringSecurityを使用して特定の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のSpringSecurityHTTP基本認証の例から抜粋した例。
データベース内のユーザーを検索する場合は、別の認証プロバイダーを使用する必要があります。Spring Securityのリファレンスには、標準のSpringSecurityユーザーデータテーブルdata-source-ref
をクエリするかどうかが記載されています。すでに独自の構造を持っている場合は、代わりに、ユーザーを自分で検索できる構造を使用することをお勧めします。user-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>
そして、 JdbcDaoImplmypackage.MyUserDetailsService
を拡張して実装するコード。UserDetailsService