Rumah >Java >javaTutorial >Cara menggunakan rangka kerja keselamatan Java shiro

Cara menggunakan rangka kerja keselamatan Java shiro

王林
王林ke hadapan
2023-05-03 11:22:061340semak imbas

    Rangka kerja keselamatan 1.shiro

    Apache Shiro ialah rangka kerja keselamatan Java yang berkuasa dan mudah digunakan yang menyediakan pengesahan, kebenaran, Dengan fungsi seperti penyulitan dan pengurusan sesi, Shiro boleh menyediakan perkhidmatan pengurusan keselamatan yang komprehensif untuk sebarang aplikasi. Dan berbanding dengan rangka kerja keselamatan lain, keselamatan musim bunga, Shiro adalah lebih mudah.

    Shiro ialah rangka kerja sumber terbuka di bawah Apache Ia mengekstrak fungsi berkaitan pengesahan keselamatan sistem perisian untuk melaksanakan pengesahan identiti pengguna, kebenaran kebenaran, penyulitan, pengurusan sesi dan fungsi lain, membentuk rangka kerja pengesahan keselamatan sejagat. .

    Shiro boleh membangunkan aplikasi yang cukup baik dengan mudah, yang boleh digunakan bukan sahaja dalam persekitaran JavaSE, tetapi juga dalam persekitaran JavaEE. Shiro boleh membantu kami melengkapkan: pengesahan, kebenaran, penyulitan, pengurusan sesi, penyepaduan dengan Web, caching, dsb.

    1.1 Apakah itu pengurusan kebenaran

    Pada asasnya, sistem yang melibatkan penyertaan pengguna mesti menjalankan pengurusan kebenaran tergolong dalam kategori keselamatan sistem. Pengurusan kebenaran merealisasikan kawalan akses pengguna kepada sistem . Mengikut peraturan Keselamatan atau kawalan dasar keselamatan bahawa pengguna boleh mengakses dan hanya mengakses sumber yang dibenarkan untuk mereka akses.

    Pengurusan kebenaran merangkumi dua bahagian: pengesahan identiti pengguna dan kebenaran, dirujuk sebagai pengesahan dan kebenaran. Untuk sumber yang memerlukan kawalan akses, pengguna mesti menjalani pengesahan identiti terlebih dahulu Selepas lulus pengesahan, pengguna boleh mengakses sumber hanya selepas lulus pengesahan.

    1.2 Apakah itu pengesahan identiti

    Pengesahan identiti ialah proses untuk menentukan sama ada pengguna adalah pengguna yang sah. Kaedah pengesahan identiti mudah yang paling biasa digunakan adalah untuk sistem menentukan sama ada identiti pengguna adalah betul dengan menyemak nama pengguna dan kata laluan yang dimasukkan oleh pengguna untuk melihat sama ada ia konsisten dengan nama pengguna dan kata laluan pengguna yang disimpan dalam sistem. Untuk sistem yang menggunakan cap jari dan sistem lain, anda perlu menunjukkan cap jari anda untuk sistem leret kad seperti kekunci perkakasan, anda perlu meleret kad anda.

    1.3 Apakah kebenaran

    Keizinan, iaitu, kawalan akses, mengawal siapa yang boleh mengakses sumber mana. Selepas pengesahan identiti, subjek perlu diberikan kebenaran untuk mengakses sumber sistem Sesetengah sumber tidak boleh diakses tanpa kebenaran.

    1.4 Apakah rangka kerja pengesahan dan kebenaran

    rangka kerja shiro dan rangka kerja keselamatan musim bunga. Rangka kerja ini agak popular di pasaran sekarang.

    2. Gunakan shiro untuk menyelesaikan kerja pengesahan

    2.1 Objek utama pengesahan dalam shiro

    Subjek: Pengguna yang tertakluk untuk mengakses sistem pengguna, program, dsb., untuk pengesahan dipanggil subjek;

    Pengetua: Maklumat identiti----Nombor akaun ialah pengenalan subjek untuk pengesahan identiti, seperti pengguna nama, nombor telefon mudah alih, alamat e-mel, dsb., subjek A boleh mempunyai berbilang identiti, tetapi mesti ada satu identiti utama (Pengetua Utama).

    kelayakan: Maklumat kelayakan---Kata laluan ialah maklumat keselamatan yang hanya subjek tahu, seperti kata laluan, sijil, dsb.

    2.2 Proses Pengesahan

    Cara menggunakan rangka kerja keselamatan Java shiro

    2.3 Kod projek

    1. Tiada pangkalan data diperlukan untuk pengesahan identiti dahulu, --fail ini kami, tetingkap Fail sistem, yang boleh menyimpan nombor akaun dan kata laluan.

    (1) Buat projek java maven

    2.3.1 Ketergantungan
     <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-core</artifactId>
                <version>1.9.0</version>
            </dependency>
    2.3.2 Cipta fail ini

    Cara menggunakan rangka kerja keselamatan Java shiro

    2.3.3 Kod ujian
    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 Prinsip pengesahan

    Cara menggunakan rangka kerja keselamatan Java shiro

    Subjek: Maklumat log masuk subjek diserahkan kepada SecurityManager --->Authenticator- - -->Lakukan pengesahan yang berkaitan berdasarkan data yang disediakan oleh alam anda. alam --- kelas yang berinteraksi dengan sumber data.

    3. Kebenaran

    Cara menggunakan rangka kerja keselamatan Java shiro

    Cara menggunakan rangka kerja keselamatan Java shiro

    3.1 Ubah suai fail ini

    Cara menggunakan rangka kerja keselamatan Java shiro

    3.2 Ubah suai kod

    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("请先认证");
            }
        }
    }

    Atas ialah kandungan terperinci Cara menggunakan rangka kerja keselamatan Java shiro. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam