ホームページ >Java >&#&チュートリアル >Java hiroセキュリティフレームワークの使い方

Java hiroセキュリティフレームワークの使い方

王林
王林転載
2023-05-03 11:22:061337ブラウズ

    1.hiro セキュリティ フレームワーク

    Apachehiro は、認証を提供する強力で使いやすい Java セキュリティ フレームワークです。認証、暗号化、セッション管理などの機能を備え、Shiro はあらゆるアプリケーションに対して包括的なセキュリティ管理サービスを提供できます。また、他のセキュリティ フレームワークである Spring Security と比較して、Shiro ははるかにシンプルです。

    Shiro は、Apache のオープンソース フレームワークであり、ソフトウェア システムのセキュリティ認証関連機能を抽出して、ユーザー ID 認証、権限認可、暗号化、セッション管理などの機能を実装し、ユニバーサル セキュリティ認証フレームワークを形成します。 . .

    Shiro は、JavaSE 環境だけでなく JavaEE 環境でも使用できる十分なアプリケーションを簡単に開発できます。 Shiro は、認証、承認、暗号化、セッション管理、Web との統合、キャッシュなどを完了するのに役立ちます。

    1.1 権限管理とは

    基本的に、ユーザー参加型のシステムでは権限管理を行う必要があります 権限管理はシステムセキュリティの範疇に属し、システムへのユーザーアクセスの制御を実現しますセキュリティ ルールまたはセキュリティ ポリシーに従って、ユーザーがアクセスを許可されているリソースにのみアクセスできるように制御されます。

    権限管理には、ユーザー ID の認証と認可 (認証と認可と呼ばれます) の 2 つの部分が含まれます。アクセス制御が必要なリソースの場合、ユーザーは本人認証を受ける必要があり、認証を通過した後のみリソースにアクセスできます。

    1.2 ID 認証とは

    ID 認証は、ユーザーが正規のユーザーであるかどうかを判断するプロセスです。最も一般的に使用される単純な ID 認証方法は、ユーザーが入力したユーザー名とパスワードがシステムに保存されているユーザー名とパスワードと一致するかどうかを確認することによって、システムがユーザーの ID が正しいかどうかを判断する方法です。指紋を使用するシステムやその他のシステムの場合は指紋を表示する必要があり、ハードウェア キーなどのカード スワイプ システムの場合はカードをスワイプする必要があります。

    1.3 認可とは

    認可、つまりアクセス制御は、誰がどのリソースにアクセスできるかを制御します。 ID 認証後、サブジェクトにはシステム リソースにアクセスするためのアクセス許可を割り当てる必要があります。一部のリソースはアクセス許可がないとアクセスできません。

    1.4 認証および認可フレームワークとは

    シロ フレームワークと Spring セキュリティ フレームワークこのフレームワークは現在市場で非常に人気があります。

    2. hiro を使用して認証作業を完了する

    2.1 hiro での認証の主要オブジェクト

    Subject: サブジェクトがシステムにアクセスするユーザー。認証のためのユーザー、プログラムなどはサブジェクトと呼ばれます;

    プリンシパル: ID 情報----アカウント番号は、ID 認証のサブジェクトの ID です。ID はユーザー名など、一意である必要があります。 、携帯電話番号、電子メール アドレスなど、A サブジェクトは複数の ID を持つことができますが、プライマリ ID (プライマリ プリンシパル) は 1 つである必要があります。

    credential: 資格情報---パスワードは、パスワードや証明書など、サブジェクトのみが知っているセキュリティ情報です。

    2.2 認証プロセス

    Java hiroセキュリティフレームワークの使い方

    2.3 プロジェクト コード

    1. まず ID 認証にデータベースは必要ありません --ini ファイル、 window システム ファイル。アカウント番号とパスワードを保存できます。

    (1) Maven Java プロジェクトの作成

    2.3.1 依存関係
     <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-core</artifactId>
                <version>1.9.0</version>
            </dependency>
    2.3.2 ini ファイルの作成

    Java hiroセキュリティフレームワークの使い方

    2.3.3 テスト コード
    public class Test01 {
        public static void main(String[] args) {
            //1.获取SecurityManager对象
            DefaultSecurityManager securityManager=new DefaultSecurityManager();
            //2.读取ini文件
            IniRealm iniRealm=new IniRealm("classpath:shiro.ini");
            //3。设置securityManager的realm
            securityManager.setRealm(iniRealm);
            //4.设置securityManager上下文生效
            SecurityUtils.setSecurityManager(securityManager);
            //5.获取subject的主体对象
            Subject subject=SecurityUtils.getSubject();
            try{
                //UsernamePasswordToken作用是封装你输入的账号和密码 是客户自己输入的 用来进行比较与realm
                UsernamePasswordToken token=new UsernamePasswordToken("admin","123456");
                //抛出异常 比对shiro中realm和自己的对比,如果一致则登录成功,不一致则登录失败
                subject.login(token);
                System.out.println("登陆成功");
            }catch(Exception e){
                e.printStackTrace();
                System.out.println("登陆失败");
            }
        }
    }

    2.4 認証の原則

    Java hiroセキュリティフレームワークの使い方

    件名: 件名ログイン情報が SecurityManager に送信されます --->Authenticator- - -->レルムから提供されたデータに基づいて、関連する認証を実行します。レルム---データ ソースと対話するクラス。

    3. 認可

    Java hiroセキュリティフレームワークの使い方

    Java hiroセキュリティフレームワークの使い方

    3.1 ini ファイルの変更

    Java hiroセキュリティフレームワークの使い方

    3.2 コードを変更します

    public class Test01 {
        public static void main(String[] args) {
            //1.获取SecurityManager对象
            DefaultSecurityManager securityManager=new DefaultSecurityManager();
            //2.读取ini文件
            IniRealm iniRealm=new IniRealm("classpath:shiro.ini");
            //3。设置securityManager的realm
            securityManager.setRealm(iniRealm);
            //4.设置securityManager上下文生效
            SecurityUtils.setSecurityManager(securityManager);
            //5.获取subject的主体对象
            Subject subject=SecurityUtils.getSubject();
            try{
                //UsernamePasswordToken作用是封装你输入的账号和密码 是客户自己输入的 用来进行比较与realm
                UsernamePasswordToken token=new UsernamePasswordToken("admin","123456");
                //抛出异常 比对shiro中realm和自己的对比,如果一致则登录成功,不一致则登录失败
                subject.login(token);
                System.out.println("登陆成功");
            }catch(Exception e){
                e.printStackTrace();
                System.out.println("登陆失败");
            }
            System.out.println("=========================登陆后===========================");
            boolean authenticated = subject.isAuthenticated();
            if(authenticated){
                //判断当前登录者是否具有user:query权限
                boolean permitted = subject.isPermitted("user:update");
                System.out.println(permitted);
                //从角色角度
                boolean role1 = subject.hasRole("role1");
                System.out.println(role1);
            }else {
                System.out.println("请先认证");
            }
        }
    }

    以上がJava hiroセキュリティフレームワークの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。