Gigya を Acegi を実行する Web アプリと統合しています。
クライアント側のGigyaが既存のユーザーを認証し、ログインフォームの投稿をスキップしてコントローラーメソッドをヒットし、ユーザー認証がGigyaによって実行されたことをサーバーに安全に通知できるようにしています。
コントローラーで次のコードを使用すると、ユーザーが認証されたことを Acegi に伝えることができます。
def user = com.playhardsports.football.web.admin.auth.User.find("from User where username=?", [UID])
def authorities = [new GrantedAuthorityImpl('ROLE_USER')] as GrantedAuthority[]
def userDetails = new org.codehaus.groovy.grails.plugins.springsecurity.GrailsUserImpl(UID, fakePassword, true, true, true, true, authorities, user)
def authentication = new UsernamePasswordAuthenticationToken(userDetails, fakePassword, authorities)
SecurityContextHolder.context.authentication = authentication
私が今抱えている問題は、認証後にユーザーをリダイレクトする場所がわからないことです。
一般的なシナリオは、ユーザーが保護されたページにアクセスし、Acegi がユーザーをログイン フォームにリダイレクトすることです。私のログインフォームには、Gigya がユーザーを検証するためのコントロールもあります。もちろん、通常の Acegi フローでは、ログイン後に元の保護されたページにリダイレクトされます。
そのため、その URL にアクセスする方法を探しています。URL がない場合は、その人が直接ログインしたため、Acegi が構成したデフォルトの URL を見つける方法を探しています。
ありがとう。