Grailsアプリケーションに取り組んでおり、カスタムシングルサインオンサービス(CASではありませんが同様)と統合したいと考えています。これを実現するためにカスタマイズする必要のあるすべての要素を見つけるのに苦労しています。誰かが私にこれを達成するために使用する必要があるものについての一般的な概要を説明できますか?プラグインのドキュメントを読みましたが、オーバーライドするBeanと、必要なすべてのファイルを配置する場所がわかっていることを前提としています。
各ポイントの下の私の調査に基づいて、私が行う必要があると思うことをブロック引用しました。
操作の順序
1-ユーザーが安全なコンテンツを要求します(今のところ、アプリケーションではすべてが安全です)
この設定はConfig.groovyファイルにあると思います。
grails.plugins.springsecurity.rejectIfNoRule = true
grails.plugins.springsecurity.securityConfigType = "InterceptUrlMap"
grails.plugins.springsecurity.interceptUrlMap = [
'/**':['ROLE_ADMIN']
]
2- Spring Securityは、ユーザーが認証サービスによって提供されるCookieに特定の値が設定されているかどうかを確認します
認証フィルターを作成する必要があると思いますが、どこに配置するのか、どのように表示するのかわかりません。
- そうでない場合、ユーザーはこのカスタムSSOサービスにリダイレクトされ、ログインします。認証されると、ユーザーは(新しいCookieセットを使用して)私のアプリケーションにリダイレクトされます。
3- SpringセキュリティはCookie値をチェックし、カスタムサービスに対して検証します(HTTP POSTを介して)
いくつかの調査から、PreAuthenticatedProcessingFilterを使用する必要があると思いますが、これを行う方法の例を見つけることができませんでした。
4-カスタムサービスは一連の名前/値ペアを返します。その後、ローカルアプリケーションデータベースにユーザーを作成する必要があります(または、ユーザーのデータがすでにデータベースにある場合は、「lastLoggedIn」のタイムスタンプが更新されます)
これは、番号3と同じPreAuthenticatedProcessingFilterまたはGrailsUserDetailsServiceで行われると思います。
5-ユーザーの認証は一定期間(6〜8時間)セッションにキャッシュされるため、ユーザーが新しいリソースを要求するたびにSSOサービスに対する再検証を行う必要はありません。
これが本質的に行われていることなのか、それともこれを行うためのコードを追加する必要があるのか(そしてセッションタイムアウトを設定する必要があるのか)はわかりません