cas wiki の Spring セキュリティ チュートリアルを使用して、CAS を Spring Security に統合しました。現在のユーザーを取得したいのですが、方法がわかりません!
Spring セキュリティまたは CAS から取得する必要がありますか?
SecurityContextHolder.getContext().getAuthentication()
null を返します :|
cas wiki の Spring セキュリティ チュートリアルを使用して、CAS を Spring Security に統合しました。現在のユーザーを取得したいのですが、方法がわかりません!
Spring セキュリティまたは CAS から取得する必要がありますか?
SecurityContextHolder.getContext().getAuthentication()
null を返します :|
SecurityContextHolder.getContext().getAuthentication() が null の場合、ユーザーがまだ認証されていないことを意味します。
CAS に関するヒント
CAS への通信に SSL を使用していることを確認してください。したがって、CAS は SSL ポート (443 または 8443) でホストされている必要があります。
CAS が SSL サーバー経由で Spring を呼び出すことができるように、Spring アプリが SSL ポートでホストされていることを確認してください。
一般的なエラーは、CAS と Spring アプリの両方が SSL ポート上にないことです。この場合は、www.startssl.com から無料の SSL 証明書を取得してください。
問題を発見!私は独自のアクセス制御システムを使用するつもりだったので、URL にアクセスするためのユーザーの役割をチェックする責任があるフィルターにコメントしました。URL をインターセプトしないと、Spring Security のコンテキストにそのリクエストを介してアクセスできないようです (または、少なくともそのように思われます! 私はドキュメントの大ファンではないので、コードを試してみて、例外が発生した場合は、私はその理由を推測しようとしています!私は本当にそれをやめるべきです:|しかし、とにかくURLを傍受したので、SecurityContextHolder.getContext().getAuthentication()はもうnullを返しません:) )