0

次のユースケースがあり、適切な実装に関する推奨事項が必要です。明確にするために、これは構成を通じて行うことができますか、それとも新しいコードを実装する必要がありますか?

ビジネスユースケース

この企業は、ユーザーがソーシャル メディア サイト経由でログインし、自分のページの一部にアクセスできるようにしたいと考えています。ただし、$$ を扱うページにアクセスするには、ユーザーはアプリケーションのローカル アカウントを介してログインする必要があります。

テクニカルユースケース

ユーザーが Facebook または他のプロバイダー経由でログインできるようにし、ロール USER_PARTIAL_RIGHTS を提供します

ユーザーがロール USER_FULL_RIGHTS でページにアクセスすると、ローカル JDBC に保存されたアカウントであるアカウントにログインするようユーザーに要求します。

この認証では、ページが他のロールではなく USER_FULL_RIGHTS ロールによって保護されていることも確認する必要があります。

グレイル スプリング セキュリティ プラグインを使用していますが、プラグインをカスタマイズする必要があると予想しています。

では、これを行うための推奨事項は何ですか? 私が持っているいくつかのアイデアは次のとおりです。

技術的なアイデア

  • カスタム スプリング アクセス拒否ハンドラー
  • ストック JSP ページの代わりにカスタム アクセス拒否コントローラー
4

2 に答える 2

0

あなたの質問から私が理解したことから、ここに私の提案があります。Facebook 経由でログインするには、Spring Social を使用します。これがドキュメントです。実装は簡単です。カスタムのサインイン メソッドを作成し、部分的な権限の権限を設定します。次のようになります。

    public void signin(String userId) {
    authorities = new ArrayList<GrantedAuthority>();
            //set your partial rights authority
    SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken(userId, null, authorities));   
}

また、@secured アノテーションを使用してメソッド レベルのセキュリティ実装を行い、完全な権限が必要なページにアクセスします。このようなもの

 @Secured("USER_FULL_RIGHTS ")
 yourMethod(){
 //code
 }

これにより、アプリケーションのローカル アカウントからの認証を使用できるログインが求められます。

于 2012-08-19T11:33:24.713 に答える
0

最終的に実装したのは、ロールを見て、ユーザーを正しいランディング ページにリダイレクトするコントローラーです。ちょっと面倒ですが、うまくいきます。

Collection<GrantedAuthority> inferred = SpringSecurityUtils.findInferredAuthorities(SpringSecurityUtils.getPrincipalAuthorities());

if(ifAnyGranted('ROLE_FOO', inferred)) {
  redirect(controller: 'foo',action: 'home')
  return
}
于 2013-01-20T00:25:08.297 に答える