1

春のセキュリティでセッション管理を実装する必要がありますが、Tomcatにアプリケーションをデプロイする際にエラーが発生します。アプリケーションは、invalid-session-urlおよびexpired-urlプロパティ値をプロパティファイルからフェッチしようとしていますが、デプリメント時にエラーが発生しています。春のセキュリティでプロパティファイルから値を読み取っているときにエラーが発生しました:セッション管理タグ

<security:http entry-point-ref="casAuthenticationEntryPoint" auto-config="true"> 
    <security:intercept-url pattern="/*" access="ROLE_USER"/> 
    <security:custom-filter position="CAS_FILTER" ref="casAuthenticationFilter"/> 
    <security:logout invalidate-session="true" logout-url="/logout" logout-success-url="#{CAS_server}/logout?service=#{CAS_application}/" delete-cookies="JSESSIONID"/> 
    <security:session-management invalid-session-url="#{CAS_server}/logout?service=#{CAS_application}" session-fixation-protection="newSession" > 
     <security:concurrency-control max-sessions="1" expired-url="#{CAS_server}/logout?service=#{CAS_application}" error-if-maximum-exceeded="true" /> 
    </security:session-management> 
</security:http> 

このエラーは、セッション管理タグでのみ発生しています。いずれにしても、どんな考えもあります。

答えて

0

すぐには春のセキュリティアプリと私の設定は、次のと、それが正常に動作します(セッション管理タグのプロパティの注入に注意してください)

test.properties

mytestservice=MyApp 
loginurl=/my-login.html 
invalidsessionurl=/my-login.html 

春のセキュリティ設定

含まれて構成されました
<bean id="webPropertyConfigurer" 
     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="ignoreResourceNotFound" value="true" /> 
     <property name="ignoreUnresolvablePlaceholders" value="true" /> 
     <property name="locations"> 
      <list> 
       <value>classpath:test.properties</value> 
      </list> 
     </property> 
    </bean> 



    <security:http> 
     <security:intercept-url pattern="/my-login.jsp" access="permitAll" /> 
     <security:intercept-url pattern="/**" access="hasRole('USER')" /> 
     <security:form-login login-page="${loginurl}" 
          authentication-failure-url="${loginurl}?error" /> 
     <security:http-basic /> 
     <security:session-management invalid-session-url="${invalidsessionurl}/logout?service=${mytestservice}" session-fixation-protection="newSession" /> 
     <security:logout /> 
    </security:http> 
+0

JNDIルックアップを使用してこれらの値をフェッチしていますが、セッション管理タグのエラーonluを取得しています。

+0

原因:java.lang.IllegalArgumentException:urlは '/'または 'http(s)'で始まる必要があります –

+0

これはSpringセキュリティによってスローされた検証エラーです - JNDIルックアップから取得したURL文字列がnullまたは空の場合、またはURLが末尾にスラッシュまたはhttp(s)で始まらない場合。たとえば、私の場合、loginurl = my-login.html(ここではスラッシュを削除しました)を入力すると、アプリケーションの起動時に同様のエラーが発生します。したがって、urlはスラッシュで始まる相対的なものでも、最初はプロトコルhttpでの絶対的なものでもなければなりません。 – Shailendra

関連する問題