春のセキュリティ アプリケーションから cas サーバーに接続しようとしています。CAS にログインすると、リクエストは webapp にリダイレクトされますが、UserDetailsService ではユーザー名として _cas_stateful_ を受け取っており、webapp で自分のユーザーを見つけてアクセス許可を読み込むことができません。
質問する
1614 次
1 に答える
2
問題は authenticationManager でした。ドキュメントにあるように、次のように CasAuthenticationProvider を使用する必要があります。
<beans:bean id="casAuthenticationProvider"
class="org.springframework.security.cas.authentication.CasAuthenticationProvider">
<beans:property name="authenticationUserDetailsService">
<beans:bean
class="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper">
<beans:constructor-arg ref="mongoUserDetailsService" />
</beans:bean>
</beans:property>
<beans:property name="serviceProperties" ref="serviceProperties" />
<beans:property name="ticketValidator">
<beans:bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">
<beans:constructor-arg index="0" value="https://localhost:7443/cas" />
</beans:bean>
</beans:property>
<!-- Esta clave es única por aplicación -->
<beans:property name="key" value="your-provider-auth" />
</beans:bean>
次に、casAuthenticationProvider を authenticationManager に設定する必要があります。
<authentication-manager alias="authenticationManager">
<!-- <authentication-provider user-service-ref='mongoUserDetailsService'/> -->
<authentication-provider ref="casAuthenticationProvider" />
</authentication-manager>
ご覧のとおり、カスタム mongoUserDetailsService は authenticationManager ではなく、新しい casAuthenticationProvider に割り当てられます。次に、casAuthenticationProvider を authenticationManager に設定します。
于 2013-08-23T16:22:32.980 に答える