2

SpringSecurityで保護されたアプリケーション用のWebサービスを開発しようとしています。1つを除いて、すべてが正常に機能します。私のWebサービスはセキュリティで保護されていない必要があり、wsdlは認証/自動起動なしで提供される必要があります。そこで、適切なインターセプトURLパターンを追加しました。ただし、wsdlページにアクセスできません。ログインページにリダイレクトされます。適切なログイン/パスワードを渡した後、wsdlにアクセスできますが、それらがないとアクセスできません。私は多くのパターンを試しましたが、すべてが失敗しました。多分いくつかのアドバイス:)?

私のSpringセキュリティコード(現在のintercept-urlを使用):

<?xml version="1.0" encoding="UTF-8"?>
<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.1.xsd
        http://www.springframework.org/schema/security 
        http://www.springframework.org/schema/security/spring-security-3.1.xsd">

    <http pattern="/resources/*" security="none" />

    <http auto-config="true" use-expressions="true">
        <intercept-url pattern="/auth/login" access="permitAll" />
        <intercept-url pattern="/auth/logout" access="permitAll" />
        <intercept-url pattern="/auth/denied" access="permitAll" />
        <intercept-url pattern="/**SampleInputImpl?wsdl**" access="permitAll" />
        <intercept-url pattern="/user" access="hasRole('ROLE_USER')" />
        <intercept-url pattern="/admin" access="hasRole('ROLE_ADMIN')" />
        <intercept-url pattern="/*" access="isAuthenticated()" />

        <form-login login-page="/auth/login" authentication-failure-url="/auth/login?error=true"
            default-target-url="/" />

        <access-denied-handler error-page="/auth/denied" />

        <logout invalidate-session="true" logout-success-url="/auth/login?logout=true" />



    </http>

    <authentication-manager>
        <authentication-provider user-service-ref="userDetailsService">
            <password-encoder hash="md5" />
        </authentication-provider>
    </authentication-manager>
</beans:beans>
4

1 に答える 1

3

インターセプトURLのAntパターンはクエリ文字列を使用しないため、?wsdlを追加すると、SpringSecurityがwsdlで一致しなくなる可能性があります。試してみることをお勧めし<intercept-url pattern="/**/SampleInputImpl" access="permitAll" />ます。

それでも問題が解決しない場合は、公開するURLを指定し、デバッグログとログの投稿を有効にしてください。

于 2013-01-29T17:38:47.360 に答える