Shiroの4つのコア機能は、「Shiroアプリケーションの4つの基盤」とも呼ばれます。
1.認証:「ログイン」(認証)と呼ばれることもあります。
これは、ユーザーが本人であることを証明するための行為です。
2.許可:アクセス制御のプロセス、つまり絶対的な「誰」が「何に」アクセスするか、つまり承認。
3.セッション管理:セッション管理:
非WebアプリケーションやEJBアプリケーションであっても、ユーザー固有のセッションを管理する方法については、後で詳しく説明します。
4.暗号化:暗号化アルゴリズムを使用してデータを安全に保ちます。
1. Webサポート: ShiroのWebサポートAPIは、Webアプリケーションの保護に役立ちます。
2.キャッシング:キャッシングは、Apache Shiroの最初の層の市民であり、安全で高速な操作を保証します。
3.並行性: Apache Shiroは、並行性機能を使用してマルチスレッドアプリケーションをサポートします。
4.テスト:単体テストと統合テストの作成に役立つテストサポートの存在。期待どおりの安全性を確保します。
5.「別のユーザーとして実行」:ユーザーが別のユーザーのID(許可されている場合)を想定できるようにする機能。スクリプトの管理に役立つ場合があります。
6.「Remember Me」:セッションでユーザーのIDを覚えておくと、強制された場合にのみログインする必要があります。
最初のステップは、検証の対象を取得することです。この主題の定義は次を参照します。
サブジェクトはセキュリティ用語であり、基本的には
「現在実行中のユーザーの特定のセキュリティビュー」を意味します。「ユーザー」という言葉は通常人間に関連しているため、「ユーザー」とは呼ばれません。セキュリティの世界では、「サブジェクト」という用語は人間として表現でき、サードパーティのプロセス、cronジョブ、デーモンアカウント、または類似したものにすることができます。それは単に「これは現在ソフトウェアと相互作用している」という意味です。ほとんどの意図と目的では、SubjectをShiroの「ユーザー」の概念と考えることができます。
/*获取验证的主体*/
Subject subject = SecurityUtils.getSubject();
/*获取Session*/
Session session = subject.getSession();
if(!subject.isAuthenticated()){ //验证通过
UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("username","password");
/*设置记住账号*/
usernamePasswordToken.setRememberMe(true);
/*登录方法*/
subject.login(usernamePasswordToken);
}
/*退出登录*/
subject.logout();
注:セッションはShiroの特定のインスタンスであり、Web環境のHttpSessionに相当します。非Web環境で使用でき、使用範囲はHttpSessionのようなWebレイヤーに限定されません。
subject.login(usernamePasswordToken);上記の例外がスローされる場合がありますが、これらの例外は同時にキャッチして処理する必要があります。
一般的な例外:
AuthenticationExceptionには、次のサブクラスが含まれます。
- CredentitalsException資格情報の例外
IncorrentCredentialsException資格情報が正しくない
ExpiredCredentialsException期限切れの資格情報
- AccountException
ConcurrentAccessException同時アクセス例外(複数のユーザーが同時にログインするとスローされます)
UnknownAccountException不明なアカウント
ExcessiveAttemptsException認証の数が制限を超えています
DisabledAccountException無効なアカウント
LockedAccountExceptionアカウントがロックされています
UnsupportedTokenExceptionサポートされていないトークンが使用されました
Handy Hint
の最も安全なアプローチは、通常のログイン失敗メッセージをユーザーに提供することです。もちろん、システムに侵入しようとする攻撃者を助けたくないからです。
1.UnknownAccountException不明なアカウント
プロンプトメッセージ:アカウントが存在しないか、アカウントのパスワードに一貫性がありません
2. IncorrentCredentialsExceptionパスワードエラー
3. LockedAccountExceptionアカウントがロックされている
最近、Springブートブログシステムに取り組んでいます。権限コントロールはShiroフレームワークを使用しています。背後の機能が改善されており、githubがリリースされる予定です。
高度なアプリケーションについては、次のエディションを参照してください。