Authentication 有没有一种方法可以让OpenSSO/OpenAM与数据库进行对话以进行身份验证和授权?

Authentication 有没有一种方法可以让OpenSSO/OpenAM与数据库进行对话以进行身份验证和授权?,authentication,authorization,opensso,Authentication,Authorization,Opensso,我们希望使用OpenSSO来满足我们的身份验证和授权需求,但更愿意使用OpenSSO 与数据库而不是默认的LDAP数据存储进行对话。我们发现OpenAM9.0版本中存在一个实验性的数据库数据存储 然而,它似乎只关注身份验证和用户生命周期管理。没有在数据库数据存储中存储权利信息的规定。我们希望将整个身份验证和授权信息保存在数据库中 我甚至可以努力定制代码,让OpenAM与数据库对话,以评估策略,并决定用户可以在特定资源上做什么或不能做什么。顺便说一下,我们需要保护几种资源,而不仅仅是页面(URL)

我们希望使用OpenSSO来满足我们的身份验证和授权需求,但更愿意使用OpenSSO 与数据库而不是默认的LDAP数据存储进行对话。我们发现OpenAM9.0版本中存在一个实验性的数据库数据存储

然而,它似乎只关注身份验证和用户生命周期管理。没有在数据库数据存储中存储权利信息的规定。我们希望将整个身份验证和授权信息保存在数据库中

我甚至可以努力定制代码,让OpenAM与数据库对话,以评估策略,并决定用户可以在特定资源上做什么或不能做什么。顺便说一下,我们需要保护几种资源,而不仅仅是页面(URL)

我查看了代码,发现基本数据存储类,如com.sun.identity.authentication.opensso.datastore.javacom.sun.identity.entity.PolicyDataStore.javacom.sun.identity.entity.opensso.OpenSSOPolicyDataStore.java

都与基于LDAP的实现紧密绑定

是否有我可以自定义的接口或抽象类,使opensso能够与数据库数据存储进行对话,以获取其权限和策略决策

我甚至愿意花几个月的时间来完成这项工作,如果有人能给我提供一些可以开始使用的提示的话

感谢和问候


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
那么对于