ホームページ  >  記事  >  バックエンド開発  >  Apache Taro ユーザーマニュアル (4) レルムの実装

Apache Taro ユーザーマニュアル (4) レルムの実装

黄舟
黄舟オリジナル
2017-01-18 09:32:381258ブラウズ

Apachehiroユーザーマニュアル(4)Realm実装

認証・認可の内部実装機構に記載されており、最終的な処理はRealに引き継いで処理することになります。これは、Shiro では、アプリケーション内のユーザー、ロール、権限の情報が最終的に Realm を通じて取得されるためです。通常、Shiro が必要とする検証情報は、Realm のデータ ソースから直接取得されます。 Realm はセキュリティフレームワークに特化した DAO と言えます

1. 認証の実装

前述の通り、Shiro の認証処理は最終的に Realm によって実行され、Realm の getAuthenticationInfo(token) メソッドが呼び出されます。

このメソッドは主に次の操作を実行します:

1. 認証のために送信されたトークン情報を確認します

2. トークン情報に基づいてデータ ソース (通常はデータベース) からユーザー情報を取得します

3. ユーザー情報の照合を実行します。検証。

4. 検証に合格すると、ユーザー情報をカプセル化した AuthenticationInfo インスタンスが返されます。

5. 検証が失敗した場合、AuthenticationException がスローされます。

アプリケーションで行う必要があるのは、Realm クラスをカスタマイズし、AuthorizingRealm 抽象クラスを継承し、doGetAuthenticationInfo() をオーバーロードし、ユーザー情報を取得するメソッドを書き直すことです。

protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException { 

UsernamePasswordToken token = (UsernamePasswordToken) authcToken; 

User user = accountManager.findUserByUserName(token.getUsername()); 

if (user != null) { 

return new SimpleAuthenticationInfo(user.getUserName(), user.getPassword(), getName()); 

} else { 

return null; 

} 

}

2. 認可の実装

認可の実装は、カスタマイズされた Realm での doGetAuthorizationInfo() メソッドをオーバーロードし、ユーザー権限を取得するメソッドを書き換えます。

protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { 

String userName = (String) principals.fromRealm(getName()).iterator().next(); 

User user = accountManager.findUserByUserName(userName); 

if (user != null) { 

SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); 

for (Group group : user.getGroupList()) { 

info.addStringPermissions(group.getPermissionList()); 

} 

return info; 

} else { 

return null; 

} 

}

上記は、Apache での Realm 実装の内容です。Shiro ユーザー マニュアル (4) の詳細については、PHP 中国語 Web サイト (www.php.cn) をご覧ください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。