権利管理フレームワークShiro oneの基本的な使用法

  • ディレクトリ

  • 構成:4つの主要コンポーネント、機能サポート

  • Shiro検証プロセス

  • 構成と例


  • 1:構成

https://img-blog.csdn.net/20160809110346980?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

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レイヤーに限定されません。

https://img-blog.csdn.net/20171121101316688?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjg2Mzc1NzU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/7grav

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がリリースされる予定です。

高度なアプリケーションについては、次のエディションを参照してください。

元の記事を27件公開しました 賞賛されました0 訪問9934

おすすめ

転載: blog.csdn.net/weixin_38246518/article/details/89735002