- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在阅读 Apache Shiro想看看我的心智模型是否正确。
From the docs: "A
Realm
is a component that can access application-specific security data such asusers
,roles
, andpermissions
". .. "Realms usually have a 1-to-1 correlation with a data source such as a relational database, LDAP directory, file system, or other similar resource. "
此外,我了解到一个应用程序
可能包含多个realms
以用于其身份验证和授权目的。
很好,但是这个 Realms
与用户的概念有什么关系?
Realm
都应该是用户空间的一个分区吗?即:User
可能只会出现在 1 个 Realm
Realms
可用于在彼此之上分层身份验证和授权,并且可能在相同的上工作用户
。但是在那种情况下,User
在哪里管理?我想它应该在 Realm
外部的某个地方,但是在哪里?也许我对此感到困惑,因为我将 User
视为单个实体(例如:我只能有一个)。而应该将 User
视为 UserAccount
。即:每个 Realm
管理它自己的 Useraccounts
(在文档中称为 User
),但是一个 User
可能有多个UserAcounts
。那是对的吗?
假设以上是正确的:
UserAccounts
?即:基本上将所有 Useraccounts
合并在一起以获得 User
的完整 View ?User
的概念(1 个 User
可能有多个 UserAccounts
)是否存在于 Shiro 中? 最佳答案
您在 authenticationStrategy
中定义 Realms
之间的关系。让我们看看这个例子。只有当他通过所有领域的认证时,用户才会被认证。您可以制作自己的 authenticationStrategy 实现,它表示只需一次成功的身份验证就足够了。
在示例中,我们结合 JDBC 领域来存储用户名(无密码)并根据 LDAP 对其进行身份验证。
假设您将添加另一个 LDAP 领域并创建 authenticationStrategy,其中不需要所有针对领域的身份验证。但只需一次成功的 LDAP 身份验证就足够了。
ds = org.apache.shiro.jndi.JndiObjectFactory
ds.requiredType = javax.sql.DataSource
ds.resourceName = java:comp/env/jdbc/xxx
noPassWordCredentialMatcher = eu.corp.domain.auth.NoPassMatcher
ldapRealm = eu.corp.domain.auth.CustomActiveDirectoryRealm
ldapRealm.searchBase = OU=USERS,OU=EN,DC=our,DC=corp
ldapRealm.url = ldap://our.corp:389
ldapRealm.principalSuffix = @our.corp
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.permissionsLookupEnabled = true
jdbcRealm.dataSource = $ds
jdbcRealm.credentialsMatcher = $noPassWordCredentialMatcher
jdbcRealm.authenticationQuery = SELECT name FROM auth WHERE name = ?
jdbcRealm.userRolesQuery = SELECT role.shortcut FROM auth LEFT JOIN auth_role ON auth_role.auth_id = auth.id LEFT JOIN role ON role.id = auth_role.role_id WHERE auth.name = ?
jdbcRealm.permissionsQuery = SELECT permission.shortcut FROM role JOIN role_permission ON role_permission.role_id = role.id JOIN permission ON permission.id = role_permission.permission_id WHERE role.shortcut = ?
cacheManager = org.apache.shiro.cache.ehcache.EhCacheManager
securityManager.cacheManager = $cacheManager
securityManager.realms = $ldapRealm, $jdbcRealm
authcStrategy = org.apache.shiro.authc.pam.AllSuccessfulStrategy
securityManager.authenticator.authenticationStrategy = $authcStrategy
关于java - User (UserAccount) 和 Realm 的概念在 Apache Shiro 中如何关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19124192/
我将 servlet 与 JPA+Hibernate 结合使用)。我不明白这个错误,除非我尝试过本论坛中建议的其他解决方案。事实上,我不想将 UserAccount 类存储为一个实体;但我只想在 Ut
用法: 1.copy下面代码至文本文档 2.将文件后缀名改为.vbs 3.双击运行 复制代码 代码如下: Ans = InPutBox("请输入要执行的操作:1.加密,2.解密,3
我已将 UserAccounts(语义 UI)包包含在 Meteor 应用程序中。 插入路由和 {{> atForm}} 后,这就是我的首页的外观。 这与此处显示的示例有很大不同:UserAccoun
我使用的是 accounts-password 和 useraccounts:bootstrap 包,一切正常,这意味着登录表单在 Meteor 中创建了一个新文档。用户集合。但我不希望在面向客户端的
我正在使用 Meteor/react 和 flowRouter,我想创建一个有两种用户的应用程序;让我们说保持简单: 客户 提供者 事实上,客户有一些“UserAccounts”字段(姓名、密码、电子
我正在为 Meteor 使用 Useraccounts 包。 我已经配置好了,用户名/电子邮件+密码登录正在使用登录时显示的用户名(用户需要在注册时输入用户名)。 但是,当我单击社交登录按钮登录时,我
我有这个two commands获取 SID 用户帐户 wmic useraccount where name='%username%' get sid | findstr /b /C:"S-1" >
我收到以下错误: One or more validation errors were detected during model generation: \tSystem.Data.Entity
如何将当前用户的 SID 保存到变量中? 基于类似的问题,当前代码如下: @echo off for /f %%a in ('wmic useraccount where Name='%usernam
我有一个 userAccounts 类,它声明了我的用户帐户的所有变量。但是,当尝试增加 userAccounts 类型的 arrayList 的大小时按下按钮时,我得到了错误。 The method
我想从用户表中获取电子邮件和密码,其中电子邮件是主键,针对电子邮件,我想从用户帐户中获取余额和帐户 ID,其中帐户 ID 是外键。针对该外键,我想要表帐户中的 accountNo SELECT `us
我正在阅读 Apache Shiro想看看我的心智模型是否正确。 From the docs: "A Realm is a component that can access application-
是否可以在登录时检查用户 Angular 色,以及用户是否处于“admin” Angular 色以显示一个页面,以及是否以“basic-user” Angular 色显示另一个页面(转到另一条路线)
我是一名优秀的程序员,十分优秀!