Authentication 有没有一种方法可以让OpenSSO/OpenAM与数据库进行对话以进行身份验证和授权?
我们希望使用OpenSSO来满足我们的身份验证和授权需求,但更愿意使用OpenSSO 与数据库而不是默认的LDAP数据存储进行对话。我们发现OpenAM9.0版本中存在一个实验性的数据库数据存储 然而,它似乎只关注身份验证和用户生命周期管理。没有在数据库数据存储中存储权利信息的规定。我们希望将整个身份验证和授权信息保存在数据库中 我甚至可以努力定制代码,让OpenAM与数据库对话,以评估策略,并决定用户可以在特定资源上做什么或不能做什么。顺便说一下,我们需要保护几种资源,而不仅仅是页面(URL) 我查看了代码,发现基本数据存储类,如com.sun.identity.authentication.opensso.datastore.java, com.sun.identity.entity.PolicyDataStore.java, com.sun.identity.entity.opensso.OpenSSOPolicyDataStore.java 都与基于LDAP的实现紧密绑定 是否有我可以自定义的接口或抽象类,使opensso能够与数据库数据存储进行对话,以获取其权限和策略决策 我甚至愿意花几个月的时间来完成这项工作,如果有人能给我提供一些可以开始使用的提示的话 感谢和问候Authentication 有没有一种方法可以让OpenSSO/OpenAM与数据库进行对话以进行身份验证和授权?,authentication,authorization,opensso,Authentication,Authorization,Opensso,我们希望使用OpenSSO来满足我们的身份验证和授权需求,但更愿意使用OpenSSO 与数据库而不是默认的LDAP数据存储进行对话。我们发现OpenAM9.0版本中存在一个实验性的数据库数据存储 然而,它似乎只关注身份验证和用户生命周期管理。没有在数据库数据存储中存储权利信息的规定。我们希望将整个身份验证和授权信息保存在数据库中 我甚至可以努力定制代码,让OpenAM与数据库对话,以评估策略,并决定用户可以在特定资源上做什么或不能做什么。顺便说一下,我们需要保护几种资源,而不仅仅是页面(URL)
Samba正在研究类似的问题。找到OpenAM的自定义身份验证模块:正在研究类似问题。找到OpenAM的自定义身份验证模块:通过编写新的opensso存储库,我可以使身份验证和授权指向数据库(或任何其他存储支持)。为此,我编写了一个扩展com.sun.identity.idm.IdRepo的新类。这是相当长的一段时间,因为新类必须重载许多IdRepo抽象方法 但这允许我在opensso中创建一个新的数据存储。为了避免opensso内部数据存储出现问题,我在一个新领域中使用了我的新数据存储
我的代码基于opensso数据库和ldap存储库示例代码(在opensso源代码中提供)。通过编写新的opensso存储库,我可以使身份验证和授权指向数据库(或任何其他存储支持)。为此,我编写了一个扩展com.sun.identity.idm.IdRepo的新类。这是相当长的一段时间,因为新类必须重载许多IdRepo抽象方法 但这允许我在opensso中创建一个新的数据存储。为了避免opensso内部数据存储出现问题,我在一个新领域中使用了我的新数据存储
我的代码基于opensso数据库和ldap存储库示例代码(在opensso源代码中提供)。这可能有助于身份验证: 博客内容由 OpenAM数据库与MySql的连接 这篇文章是很久以前写的。在创建单点登录实现时,我一直在坚持我的项目。我当时使用的是一款令人惊叹的软件,OpenAM,前身是OpenSSO,目前由Forgerock社区维护 我的设置:我使用Tomcat,在Centos上运行Mysql和OpenAM 11.0.0 首先,为您的操作系统安装mysql连接器java,您应该得到一个jar文件。这是我盒子上的东西:
# rpm -ql mysql-connector-java | grep jar
/usr/share/java/mysql-connector-java-5.1.17.jar
/usr/share/java/mysql-connector-java.jar
Now copy this to your tomcat installation directory. At "$CATALINA_HOME/lib" and restart tomcat.
如果跳过上述步骤,您将遇到如下错误:
java.lang.InstantiationException: JdbcSimpleUserDao.initialize: failed to load driver class jdbcDriver=com.mysql.jdbc.Driver exception=com.mysql.jdbc.Driver
at com.sun.identity.idm.plugins.database.JdbcSimpleUserDao.initialize(JdbcSimpleUserDao.java:274)
at com.sun.identity.idm.plugins.database.DatabaseRepo.initialize(DatabaseRepo.java:429)
at com.sun.identity.idm.server.IdRepoPluginsCache.constructIdRepoPlugin(IdRepoPluginsCache.java:475)
at com.sun.identity.idm.server.IdRepoPluginsCache.addIdRepo(IdRepoPluginsCache.java:353)
at com.sun.identity.idm.server.IdRepoPluginsCache.removeIdRepo(IdRepoPluginsCache.java:251)
at com.sun.identity.idm.server.IdRepoPluginsCache.organizationConfigChanged(IdRepoPluginsCache.java:646)
at com.sun.identity.sm.ServiceConfigManagerImpl.notifyOrgConfigChange(ServiceConfigManagerImpl.java:493)
at com.sun.identity.sm.ServiceConfigManagerImpl.objectChanged(ServiceConfigManagerImpl.java:453)
at com.sun.identity.sm.SMSNotificationManager.sendNotifications(SMSNotificationManager.java:289)
at com.sun.identity.sm.SMSNotificationManager$LocalChangeNotifcationTask.run(SMSNotificationManager.java:365)
at com.iplanet.am.util.ThreadPool$WorkerThread.run(ThreadPool.java:306)
接下来,连接到mysql服务器并在OpenAM中导航到此页面(访问控制->领域(由您选择)->数据存储->新建):
输入mysql数据库用户的密码和用户名。还要更改mysql数据库安装的IP地址、端口和数据库名称,以引用专门为OpenAM保留的表。OpenAM将在此数据库中使用2个表,您需要在此处指定其名称:
User Configuration
*Database User Table Name: opensso_users
在这里:
Group configuration
Database Membership table name: groups
所以对于用户表,您需要将列创建为VARCHAR,不知为什么integer对我不起作用。您需要在表中包含的列名可在此表中找到:
List of User Attributes Names in Database
uid
ChangePassword
sunIdentityMSISDNNumber
mail
sn
manager
preferredlocale
iplanet_am_user_password_reset_force_reset
givenname
iplanet_am_user_alias_list
我删除了所有iplanet_*属性,并在MySql数据库中创建了一个用户表。然后使用以下sql脚本为默认配置创建数据库条目:
create database test;
use test;
create table opensso_users (uid varchar(50), userpassword varchar(50), inetuserstatus integer, cn varchar(50),mail varchar(50),manager varchar(50), preferredlocale varchar(50), givenname varchar(50), telephonenumber varchar(50), telephonenumber varchar(50), telephonenumber varchar(50), sn varchar(50) );
create table groups (uid varchar(50), group_name varchar(50), cn varchar(50));
现在将您的用户添加到此表并开始,开始,开始
注意:我无法让小组使用此配置,如果您有任何诀窍,请告诉我
另请阅读:
1:
2:数据库配置上的邮件列表条目这可能有助于身份验证: 博客内容由 OpenAM数据库与MySql的连接 这篇文章是很久以前写的。在创建单点登录实现时,我一直在坚持我的项目。我当时使用的是一款令人惊叹的软件,OpenAM,前身是OpenSSO,目前由Forgerock社区维护 我的设置:我使用Tomcat,在Centos上运行Mysql和OpenAM 11.0.0 首先,为您的操作系统安装mysql连接器java,您应该得到一个jar文件。这是我盒子上的东西:
# rpm -ql mysql-connector-java | grep jar
/usr/share/java/mysql-connector-java-5.1.17.jar
/usr/share/java/mysql-connector-java.jar
Now copy this to your tomcat installation directory. At "$CATALINA_HOME/lib" and restart tomcat.
如果跳过上述步骤,您将遇到如下错误:
java.lang.InstantiationException: JdbcSimpleUserDao.initialize: failed to load driver class jdbcDriver=com.mysql.jdbc.Driver exception=com.mysql.jdbc.Driver
at com.sun.identity.idm.plugins.database.JdbcSimpleUserDao.initialize(JdbcSimpleUserDao.java:274)
at com.sun.identity.idm.plugins.database.DatabaseRepo.initialize(DatabaseRepo.java:429)
at com.sun.identity.idm.server.IdRepoPluginsCache.constructIdRepoPlugin(IdRepoPluginsCache.java:475)
at com.sun.identity.idm.server.IdRepoPluginsCache.addIdRepo(IdRepoPluginsCache.java:353)
at com.sun.identity.idm.server.IdRepoPluginsCache.removeIdRepo(IdRepoPluginsCache.java:251)
at com.sun.identity.idm.server.IdRepoPluginsCache.organizationConfigChanged(IdRepoPluginsCache.java:646)
at com.sun.identity.sm.ServiceConfigManagerImpl.notifyOrgConfigChange(ServiceConfigManagerImpl.java:493)
at com.sun.identity.sm.ServiceConfigManagerImpl.objectChanged(ServiceConfigManagerImpl.java:453)
at com.sun.identity.sm.SMSNotificationManager.sendNotifications(SMSNotificationManager.java:289)
at com.sun.identity.sm.SMSNotificationManager$LocalChangeNotifcationTask.run(SMSNotificationManager.java:365)
at com.iplanet.am.util.ThreadPool$WorkerThread.run(ThreadPool.java:306)
接下来,连接到mysql服务器并在OpenAM中导航到此页面(访问控制->领域(由您选择)->数据存储->新建):
输入mysql数据库用户的密码和用户名。还要更改mysql数据库安装的IP地址、端口和数据库名称,以引用专门为OpenAM保留的表。OpenAM将在此数据库中使用2个表,您需要在此处指定其名称:
User Configuration
*Database User Table Name: opensso_users
在这里:
Group configuration
Database Membership table name: groups
那么对于