Apachehiro は、認証を提供する強力で使いやすい Java セキュリティ フレームワークです。認証、暗号化、セッション管理などの機能を備え、Shiro はあらゆるアプリケーションに対して包括的なセキュリティ管理サービスを提供できます。また、他のセキュリティ フレームワークである Spring Security と比較して、Shiro ははるかにシンプルです。
Shiro は、Apache のオープンソース フレームワークであり、ソフトウェア システムのセキュリティ認証関連機能を抽出して、ユーザー ID 認証、権限認可、暗号化、セッション管理などの機能を実装し、ユニバーサル セキュリティ認証フレームワークを形成します。 . .
Shiro は、JavaSE 環境だけでなく JavaEE 環境でも使用できる十分なアプリケーションを簡単に開発できます。 Shiro は、認証、承認、暗号化、セッション管理、Web との統合、キャッシュなどを完了するのに役立ちます。
基本的に、ユーザー参加型のシステムでは権限管理を行う必要があります 権限管理はシステムセキュリティの範疇に属し、システムへのユーザーアクセスの制御を実現しますセキュリティ ルールまたはセキュリティ ポリシーに従って、ユーザーがアクセスを許可されているリソースにのみアクセスできるように制御されます。
権限管理には、ユーザー ID の認証と認可 (認証と認可と呼ばれます) の 2 つの部分が含まれます。アクセス制御が必要なリソースの場合、ユーザーは本人認証を受ける必要があり、認証を通過した後のみリソースにアクセスできます。
ID 認証は、ユーザーが正規のユーザーであるかどうかを判断するプロセスです。最も一般的に使用される単純な ID 認証方法は、ユーザーが入力したユーザー名とパスワードがシステムに保存されているユーザー名とパスワードと一致するかどうかを確認することによって、システムがユーザーの ID が正しいかどうかを判断する方法です。指紋を使用するシステムやその他のシステムの場合は指紋を表示する必要があり、ハードウェア キーなどのカード スワイプ システムの場合はカードをスワイプする必要があります。
認可、つまりアクセス制御は、誰がどのリソースにアクセスできるかを制御します。 ID 認証後、サブジェクトにはシステム リソースにアクセスするためのアクセス許可を割り当てる必要があります。一部のリソースはアクセス許可がないとアクセスできません。
シロ フレームワークと Spring セキュリティ フレームワークこのフレームワークは現在市場で非常に人気があります。
Subject: サブジェクトがシステムにアクセスするユーザー。認証のためのユーザー、プログラムなどはサブジェクトと呼ばれます;
プリンシパル: ID 情報----アカウント番号は、ID 認証のサブジェクトの ID です。ID はユーザー名など、一意である必要があります。 、携帯電話番号、電子メール アドレスなど、A サブジェクトは複数の ID を持つことができますが、プライマリ ID (プライマリ プリンシパル) は 1 つである必要があります。
credential: 資格情報---パスワードは、パスワードや証明書など、サブジェクトのみが知っているセキュリティ情報です。
1. まず ID 認証にデータベースは必要ありません --ini ファイル、 window システム ファイル。アカウント番号とパスワードを保存できます。
(1) Maven Java プロジェクトの作成
<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.9.0</version> </dependency>
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("登陆失败"); } } }
件名: 件名ログイン情報が SecurityManager に送信されます --->Authenticator- - -->レルムから提供されたデータに基づいて、関連する認証を実行します。レルム---データ ソースと対話するクラス。
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 サイトの他の関連記事を参照してください。