Java hiroセキュリティフレームワークの使い方
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 認証プロセス
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 ファイルの作成
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 認証の原則
件名: 件名ログイン情報が SecurityManager に送信されます --->Authenticator- - -->レルムから提供されたデータに基づいて、関連する認証を実行します。レルム---データ ソースと対話するクラス。
3. 認可
3.1 ini ファイルの変更
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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。
