我正在构建一个可以通过 jdbc 访问 PeopleSoft 数据库的 Web 应用程序。我是否可以将 PeopleSoft 的 ID/密码用于我的自定义应用程序,这样访问我网站的用户就不必拥有另一个用户名/密码?
5 回答
Peoplesoft 将用户详细信息存储在表 PSOPRDEFN 中。
您将能够验证用户名:PSOPRDEFN.OPRID。
密码字段为:OPERPSWD。
不幸的是,用于该字段的加密函数:hash()
只能在 peoplecode 中使用。
如果您想使用单点登录,您应该可以通过自定义 USERMAINT.gbl 组件(可能在 saveprechange peoplecode 中)来使用可以从 JDBC 实现的加密算法将密码保存在您选择的第二个字段中也是。
如果要重用 PeopleSoft 安全性,则需要在比 JDBC 更高的级别上直接连接到数据库。您可以查看组件接口(可使用 Java 编码)或将 SOAP 消息发送到 PeopleSofts 集成网关——这两种方法都会使用自己的安全机制针对 peopleSoft 对您进行身份验证。
旧方法是根据您的需要自定义 psuser.c 并重新编译为新的 dll,将其用于您的程序,假设您在 Microsoft 平台上。如上所述,您可以让 peoplesoft 开发人员创建一个组件接口(或使用提供的接口)。您可以从 CI(模板)中导出包装 Java 或 C/C++ 代码。然后可以在外部程序中使用此代码来调用 CI。无论哪种方式,您都必须与 peopletools 交互才能调用他们的解密密码。
根据您的业务的动态程度,无论您是否每天添加大量员工,您都可以使用应用程序消息将 psoprdefn 导出到另一个数据库。在发送时,您可以随意加密密码。但正如你可以推测的那样,这不会是实时的。
我记得很久以前做过的一件事是让 peoplesoft 技术人员开发一个页面,该页面的唯一功能是调用我的 java 类并根据需要获取用户/pswds。一旦我有了它们,我就可以走了。
您可以使用 psjoa.jar ,这样您就可以使用 psoprdefn 表中的相同用户和密码通过 app.server 登录。
PeopleSoft has an LDAP integration ability but it has to be configured. If you are accessing via a Java wrapper around a component interface, a special account can be set up in PeopleSoft with access only to the underlying component, but the login/password would have to be passed into the component interface. This can be encrypted or sent over https.
PeopleSoft also has what it calls "row level" security - the ability to partition data sets so that for example your code could only access employee data within a specific business unit or accounting info for a particular line of business. This is all controlled within the PeopleSoft online security application.