Java 開発では、アプリケーションのセキュリティが非常に重要です。 Shiro は、認証、認可、暗号化、セッション管理などのセキュリティ機能を実装するために使用できる、強力で使いやすい Java セキュリティ フレームワークです。この記事では、Java API開発における認証にShiroを使用する方法を紹介します。
- はじめに
Shiro を使用する前に、いくつかの基本的な設定を行う必要があります。 Maven を使用して、Shiro 依存関係を追加できます。プロジェクトの pom.xml に次のコードを追加します。
<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.7.1</version> </dependency>
- Shiro の基本概念
Shiro を使用する場合、いくつかの基本概念を理解する必要があります。ここでは、いくつかの重要な概念を示します。
認証: 認証は、ユーザーの身元を確認するプロセスです。 Shiro では、ユーザー名とパスワードを使用して認証できます。
承認: 承認は、ユーザーが操作を実行するための十分な権限を持っていることを確認するプロセスです。 Kiri では、ロールとパーミッションを使用して承認を行うことができます。
セッション管理: セッションとは、サーバーとの対話プロセスを指します。これには、要求と応答のプロセス、またはサーバー上の多数の対話プロセスが含まれます。 Shiro は、ユーザー セッションのライフ サイクルを管理するためのセッション管理機能を提供します。
暗号化: 暗号化とは、ユーザーのパスワードおよびその他の機密情報を暗号化することを指します。 Shiro は、ユーザー情報を簡単に暗号化するためのさまざまなハッシュおよび暗号化アルゴリズムを提供します。
- Shiro の設定
Shiro を使用する場合は、まず、Shiro のセキュリティ ポリシーを設定する必要があります。これは、Shiro 設定ファイルで次のように設定することで実現できます。
securityManager.realms = $myRealm securityManager.sessionManager = $sessionManager sessionManager.globalSessionTimeout = 86400000
上記の設定では、Shiro のセキュリティ ポリシーとして myRealm を使用しています。また、グローバル セッション タイムアウトを 1 日 (24 時間) に設定します。
さらに、AuthenticatingRealm、CredentialsMatcher など、Shiro 構成ファイルで他のコンポーネントも宣言する必要があります。サンプル構成ファイルは次のとおりです。
[main] # Shiro提供的默认的会话管理器实现 sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager # 自定义的会话DAO,实现了会话保存、更新、删除 sessionDAO = org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO securityManager.sessionManager = $sessionManager securityManager.sessionManager.sessionDAO = $sessionDAO # 使用自定义的Realm实现 myRealm = com.example.MyRealm securityManager.realms = $myRealm # 加密配置 credentialsMatcher = org.apache.shiro.authc.credential.Sha256CredentialsMatcher # 密码加密的次数 credentialsMatcher.hashIterations = 1024 myRealm.credentialsMatcher = $credentialsMatcher
- ユーザーの認証
Shiro を構成した後、ユーザーを認証するコードの作成を開始できます。ユーザーを認証するには、Shiro によって提供される UsernamePasswordToken オブジェクトを使用できます。以下はサンプル コードです:
// 在应用程序中创建一个SecurityUtils实例 SecurityUtils securityUtils = new SecurityUtils(); // 创建一个Subject对象,表示当前用户的身份 Subject currentUser = securityUtils.getSubject(); // 创建一个UsernamePasswordToken对象,表示用户输入的用户名和密码 UsernamePasswordToken token = new UsernamePasswordToken("username", "password"); try { // 调用Subject的login方法进行认证 currentUser.login(token); // 认证成功后,我们可以执行必要的操作,如重定向到受保护的页面 // ... } catch (UnknownAccountException | IncorrectCredentialsException e) { // 当认证失败时,抛出异常,我们可以根据不同的异常类型做出不同的响应 // ... }
上記のコードでは、現在のユーザーの ID を表す Subject オブジェクトを作成します。次に、ユーザーが入力したユーザー名とパスワードを表す UsernamePasswordToken オブジェクトを作成します。最後に、サブジェクトのログイン メソッドを呼び出してユーザーを認証します。ユーザーの認証が失敗した場合、適切な例外がスローされます。ユーザーの認証が成功すると、他の操作を続行できます。
- 認可の実装
ユーザーを認証した後、Shiro の認可機能を使用して、ユーザーのシステム リソースへのアクセスを制御できます。承認は、役割と権限を通じて実現できます。以下はサンプル コードです。
// 在应用程序中创建一个SecurityUtils实例 SecurityUtils securityUtils = new SecurityUtils(); // 创建一个Subject对象,表示当前用户的身份 Subject currentUser = securityUtils.getSubject(); // 检查用户是否具有角色 if (currentUser.hasRole("admin")) { // 用户具有管理员角色,可以执行管理员特权操作 // ... } else { // 用户不是管理员,不能执行管理员特权操作 // ... } // 检查用户是否具有权限 if (currentUser.isPermitted("user:read")) { // 用户具有读取用户信息的权限,可以查看用户信息 // ... } else { // 用户没有相应的读取权限,不能查看用户信息 // ... }
上記のコードでは、hasRole メソッドを使用して、ユーザーにロールがあるかどうかを判断します。 isPermitted メソッドを使用して、ユーザーに権限があるかどうかを判断します。ユーザーが対応する役割または権限を持っている場合、対応する操作を実行できます。
- #結論
以上がJava API開発における認証にShiroを使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

この記事では、分散アプリケーションを構築するためのJavaのリモートメソッドの呼び出し(RMI)について説明します。 インターフェイスの定義、実装、レジストリのセットアップ、およびクライアント側の呼び出しを詳述し、ネットワークの問題やセキュリティなどの課題に対処します。

この記事では、ネットワーク通信のためのJavaのソケットAPI、クライアントサーバーのセットアップ、データ処理、リソース管理、エラー処理、セキュリティなどの重要な考慮事項をカバーしています。 また、パフォーマンスの最適化手法も調査します

この記事では、カスタムJavaネットワーキングプロトコルの作成を詳述しています。 プロトコルの定義(データ構造、フレーミング、エラー処理、バージョン化)、実装(ソケットを使用)、データシリアル化、およびベストプラクティス(効率、セキュリティ、メンテナ


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

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

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

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

ホットトピック



