0

次のようなユーザー認証を実装する必要があります。

  1. ユーザーはリンクを取得します。リンクには、彼の詳細 (ID など) と有効期限の一部を暗号化するトークンがあります ==> この URL はアプリケーションの外部にあり、既に実装されています
  2. ユーザーがリンクをクリックすると、トークンを復号化してデータを解析する必要がありますが、DB のデータと比較する必要はありません。時間が期限切れになっていないことを確認し、データ(IDなど)を取得するためだけに

使用するクラスを教えてください。私はたくさん読んできましたが、今のところ、AbstractPreAuthenticatedProcessingFilter を拡張して URL からトークンを取得して復号化する必要があると思いますが、認証プロバイダーについてはわかりません。

ありがとう!

編集:

私はもっ​​と読んでいますが、ユーザーが以前に認証されたわけではないので、PreAuthenticated クラスが必要かどうかわかりません。まだ彼を認証する必要があります。認証は実際には、復号化が機能し、有効期限に達していないことを確認しています。何を指示してるんですか?私は独自のフィルター (AbstractAuthenticationProcessingFilter を拡張) の作成を開始しましたが、UsernamePasswordAuthentication が自分に合わないため、独自の AuthenticationToken 実装が必要であることがわかりました。また、プロバイダーでも、実際に適合するものを見つけることができませんでした。

どんな助けでも感謝します。AbstractAuthenticationProcessingFilter を拡張することを検討していますが、認証マネージャーを使用しないと、複雑になるだけです。どう思いますか?

4

1 に答える 1

0

使用できるアプローチは次のとおりです。

1)「GenericFilterBean」を拡張して独自のセキュリティフィルターを作成し、これを「http」構成の「カスタムフィルター」として使用できます。

2)オプション:ニーズに基づいて、非常に簡単な独自の「UserDetails」を実装できます。

3)オプション:「Authentication」の実装に「PreAuthenticatedAuthenticationToken」を使用できます。

4)フィルターで、適切なパラメーターの存在を探すことができます。情報を復号化してみてください。問題が発生した場合は、認証例外をスローし、次に説明するエントリポイントで処理します。

5)オプション:成功した場合は、UserDetailsオブジェクトをPreAuthenticatedAuthenticationTokenでラップし、セキュリティコンテキストホルダーに設定できます。

6)「AuthenticationEntryPoint」を実装し、「commence」をオーバーライドして、securitycontext / sessionをクリアし、カスタムフィルターからAuthenticationExceptionを処理し、ビューにリダイレクト/ディスパッチします。これをエントリポイントとして使用します。

于 2013-03-04T16:26:52.703 に答える