Db2 验证rpgs的用户、密码和打开菜单

Db2 验证rpgs的用户、密码和打开菜单,db2,ibm-midrange,rpgle,rpg,Db2,Ibm Midrange,Rpgle,Rpg,我的AS400(rpg400)应用程序中有一个登录模块。在这里,验证用户名和密码,只有在密码匹配的情况下,用户才能访问菜单屏幕,菜单屏幕中进一步包含rpg程序,以导航到后续模块 我现在想要实现的是,当用户被验证时,登录的用户名必须出现在每个屏幕上,或者更确切地说,出现在每个被调用的rpg屏幕上。(ie用户会话必须保持)请不要在管理属性上进行指导。这是从工作的低级别开始的 以下是关于用户的PF: USER PF A R USRREC

我的AS400(rpg400)应用程序中有一个登录模块。在这里,验证用户名和密码,只有在密码匹配的情况下,用户才能访问菜单屏幕,菜单屏幕中进一步包含rpg程序,以导航到后续模块

我现在想要实现的是,当用户被验证时,登录的用户名必须出现在每个屏幕上,或者更确切地说,出现在每个被调用的rpg屏幕上。(ie用户会话必须保持)请不要在管理属性上进行指导。这是从工作的低级别开始的

以下是关于用户的PF:

       USER PF


A          R USRREC                
A            USER          10A     
A            PWD           10A     
A            USRTYP         2A     
A          K USRTYP                

键入用户类型。如何允许登录人员的变量可供所有PGM访问?

5250显示与HTML不同。没有CSS可以用作标准模板。您需要专门设计每个显示器,使其看起来像您想要的那样。对于这个特定的问题,这意味着您将在每个要查看它的显示面板上放置一个用户ID字段

如果我设计这个,我可能会将用户ID作为参数传递给每个RPG程序,但是传递信息的方法有很多

  • QTEMP中的数据区
  • QTEMP中的数据库文件
  • LDA
  • QTEMP中的用户空间
  • 环境变量(*JOB)
将用户ID作为参数传递具有这样的优点:永远不会有需要清理的过时对象。如果一个人有两个用户ID——比如说她在会计和应付账款部门工作——并且需要注销并重新登录到这个内部安全系统,那么随后的调用只需传递适当的参数


如果系统可以使用内置的IBM安全性,那么所有这些都可以避免。然后,您可以使用作为作业名称一部分的用户配置文件—请参阅,位置254-263,以在RPG程序中获得该配置文件。如果您可以使用IBM用户配置文件,就不必传递任何信息;每个程序都能够自己检索这些信息;我会把它放到一个服务程序中,这样就很容易重用了

听起来是在QTEMP中创建的或常规数据区域的理想用途


如果您使用的用户ID与登录系统时使用的用户ID相同,则可以在显示文件中使用
user
关键字

您是否真的需要将用户ID和密码存储在一个文件中,而该文件本身就不如操作系统那样安全?这打开了一系列您可能不需要触及的问题

您可以调用CL程序或过程,该程序或过程可以使用
CHKPWD
命令输入其系统密码。监视错误,并在出现问题时将其注销。他们的密码是安全的(假设您使用的是SSL连接)

<>如果你强烈地认为你必须有一个单独的密码,考虑存储一个安全的单向散列的密码。当他们稍后输入密码时,计算他们输入的哈希值,并将其与存储的哈希值进行比较


如果您要求用户在登录后输入密码,那么可以安全地假设您正在尝试解决一些安全问题,因此以安全的方式帮助您这样做似乎是合理的。这是一个开始。

+1了解更多信息,尤其是尝试使用IBM登录。身份验证是困难的,IBM会为您解决大部分问题。当然,事情被限制为10个字符,这不是很好,但是…@buck我正在处理rpg 400,因此在dat情况下使用pgm状态数据结构是困难的。如果我要使用数据区域,我应该如何继续。RPG400很容易支持程序状态数据结构@JamesA发布了使用数据区的参考链接,如果你想这样做的话。本地数据区很简单,并且为几代RPG程序员所理解。不利的一面是,每个应用程序都认为它和它单独使用LDA。当其他应用程序步进“你的”LDA时,会导致不想要的结果。如果您知道系统上没有其他应用程序使用LDA,那么LDA是解决上述问题的一个非常好的答案。您最好在QTEMP中使用外部数据区域。或者考虑使用环境变量。LDA不是最好的解决方案,如果没有其他原因,任何不知道您如何使用它的程序都可以使用它。如果我允许我的系统具有两种类型的登录功能,一种用于现有用户,另一种用于新用户注册n den登录。在这种情况下,我如何确保需要在该
CHKPWD
中指定哪个密码关键字。例如:
CHKPWD PASSWORD(JOHNJONES)
在这里代替JOHNJONES如何动态分配var?这些新用户如何在不首先登录的情况下进入系统?通常,IBM i系统的设置是为了在允许登录之前必须请求用户配置文件,而IBM提供的配置文件被禁用,并且不允许默认的常规访问。安全哲学通常试图避免给一英寸,以免有人不知何故找到一个意想不到的方式利用到院子里。[如果愿意,请将其更改为cm&m;)]并构建冗余的安全层,以防其他层失败。但是密码应该得到最大的关注,即使是在一个简单的系统上,因为用户有时会在多个情况下使用密码,因此这里的折衷可能会解锁其他的门。当QPWDLVL系统值设置为允许更长的密码或传递短语(应该是这样)时会发生什么?当启用SSO且系统上没有人拥有密码时会发生什么情况?