0

私のJava SEアプリでの現在のアプローチは、(認証されたら)ユーザー名のみをシステムプロパティとして保存することです。これは、セキュリティに影響を与える可能性があることを理解しています

特定のロールを必要とするアクションを実行しようとすると、このユーザー名を使用してデータベースが呼び出され、特定のユーザーがそのロールを持っているかどうかが確認されます。

すべてのロールを事前にロードしてから、「ユーザー」オブジェクトに対してアクセスが許可されているかどうかを確認することをお勧めします。ただし、これはすべて、非常に制御された方法で行う必要があります。

このための標準的なアプローチ/フレームワークはありますか? 私はすでに認証済みで、ユーザーの詳細を保存したいだけです。現在ログインしているユーザーをシングルトンとして保存することは、これにアプローチする賢明な方法でしょうか?

4

2 に答える 2

0

アプリケーションでの認証と認可にJAASを使用できます。このフレームワークは、すべての Java アプリケーション (Web、スタンドアロン、Java EE など) に適用できます。

別のオプションはSpring Securityです。Spring Security には、ユーザーが認証されると、認証ステータス (ロール) を格納できるクラスSecurityContextHolderがあります。後でこれを使用して、操作にアクセスしようとしたときにユーザーの役割を確認できます。これは Web アプリケーションではなく、Java SE で使用できます。

List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
authorities.add(new RestUserAuthrity("ROLE_USER"));
CustomAuthenticationToken authenticationToken = new CustomAuthenticationToken(authorities);
SecurityContextHolder.getContext().setAuthentication(authenticationToken);

メソッド呼び出し中や役割を確認したいところ。SecurityContextHolder からロールを取得し、適切なロールを確認するだけです。

于 2013-08-23T11:38:21.483 に答える
-1

セッション管理にSpringフレームワークを使用することをお勧めします.Springは現在ログインしているユーザーのリストを提供し、ログインしているユーザーを保存できます。

于 2013-08-23T11:40:32.883 に答える