私はRESTベースのWebアプリケーションを開発しています。ここでは、休憩サービスにApache shiroが統合されており、基本認証とロールベースの認証が実行されています。Apache shiro + HTTPメソッドレベルの許可
ここでは、メソッドレベル(RESTの場合はマイクロサービス)で権限設定を使用して権限機能を強化したいと考えています。私が間違っていない場合、Apache shiroはHttpMethodPermissionFilterクラスを提供しています。このクラスは、HTTPメソッド(GET、POST、DELETE、HEADなど)に基づいて受信リクエストを制限するフィルタとして使用でき、内部でroles_permissionsテーブルのアクセス権をチェックします。設定したデータベースまたはINI設定ファイル。
したがって、HTTPメソッドベースのアクセス許可機能を実装するには、shiro.iniファイルを変更する必要がありますか。あるいは、私のjdbcの領域には何かがあります。
shiro.iniファイル
[main]
userRoles = org.apache.shiro.web.filter.authz.RolesAuthorizationFilter
jdbcRealm = my.custom.jdbc.realm.YhJdbcRealm
securityManager.realms = $jdbcRealm
[urls]
# Allowing login page to any user
/rest/login/** = anon
# Page 1
/rest/page1/** = noSessionCreation, authcBasic, userRoles[role1]
# page 2
/rest/page2/** = noSessionCreation, authcBasic, userRoles[role1,role2,role3]
# page 3
/yhrest/page3/** = noSessionCreation, authcBasic, userRoles[role1,role3]
/rest/** = noSessionCreation, authcBasic
カスタムJDBCレルムに
public class YhJdbcRealm extends JdbcRealm
{
public YhJdbcRealm()
{
loadDataSource();
}
private void loadDataSource()
{
this.dataSource = JdbcConnection.initConnection();
this.permissionsLookupEnabled = true;
this.authenticationQuery = "SELECT password FROM users WHERE username = ?";
this.userRolesQuery = "SELECT role_name FROM user_roles WHERE username = ?";
this.permissionsQuery = "SELECT permission FROM roles_permissions_temp WHERE role_name = ?";
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException
{
AuthenticationInfo info = super.doGetAuthenticationInfo(token);
return info;
}
}
任意の参照は感謝されるので、私は、Apache史郎に新しいです。おかげさまで
abc:create
abc:read
abc:update
abc:delete
:
にマッピングされますpage1のために。どんなフォーマットで、それがデータベースにどのように格納されるのか、素晴らしいですか?特定のページの実際の権限チェックを実行するために必要なスキーマと値を共有できますか。 –
はい 'abc'は基本的なユーザー権限ですが、私は 'page1'を使うつもりでしたが、説明のためにそれらを別々にしておきたいと思いました。 スキーマはあなた次第ですが、例のように 'permission'カラムは権限をロールにマップします。詳細については、以下のリンクをご覧ください。 [Shiro Permissionsに関するブログ](https://stormpath.com/blog/protecting-jax-rs-resources-rbac-apache-shiro#authorize-the-stormtroopers- jax-rs-resource)、 [Shiro Permissions](https://shiro.apache.org/permissions.html) –