1

我有一个 cics 应用程序,我不想开发登录屏幕,而是想通过获取用户 ID 来限制访问,然后验证是否允许他们运行我的应用程序。这可能吗?谢谢

4

4 回答 4

3

在 CICS 环境中限制对某些事务的访问可能比通过获取 USER ID 并与列表进行比较更好的方法。大多数商店已经开发出标准技术来限制对 CICS 内交易的访问。但是,如果您必须找到用户 ID,请尝试以下操作:

       EXEC CICS ASSIGN                                              
            USERID(WS-USERID)                                        
       END-EXEC.   

哪里WS-USERID是工作存储 PIC X(8) 字段。

这是CICS ASSIGN文档的链接。

编辑

如何检查多个用户ID?您需要一个授权用户列表来比较当前用户 ID。如果用户 id 在列表中,则该用户被授权使用该事务。通常,您有几个选项来管理此类列表:

  • SELECT 针对包含授权用户 ID 的数据库表。使用当前用户 ID 作为谓词(例如 WHERE USER_ID = :WS-USERID)。如果您返回一行,则该用户已获得授权。
  • SEARCH/SEARCH ALL一个 WORKING-STORAGE 表,其中填充了匹配的授权用户 ID。如果你得到一个匹配,用户被授权。

WORKING-STORAGE 表解决方案最不灵活,因为每次添加或删除新用户时可能需要更新和重新编译程序。

但是,正如我和cschneid所指出的,访问安全最好在应用程序之外使用 RACF 或 ACF2 之类的东西来处理。您的本地系统管理员应该能够帮助您进行此设置。

于 2012-04-25T19:56:55.600 回答
3

CICS 可以与外部安全管理器对话,例如 RACF、CA-ACF2 或 CA-Top Secret。通过在外部安全管理器中设置正确的规则或配置文件,应用程序通常在事务级别得到保护。

这样,安全操作在应用程序逻辑之外执行。访问权限由安全人员而非应用程序开发人员授予。

于 2012-04-25T22:23:02.063 回答
2

继续您对NealB关于多个用户的回答的评论:您的安全管理员可以将所有有问题的用户 ID 添加到一个组中,然后为您的事务定义对该组的访问权限。

你真的应该让你的安全管理处理事务访问。良好的系统设计将安全管理置于应用程序之外。

于 2012-04-26T22:27:21.397 回答
2

使用带有安全扩展功能包(集成在 V5.2 中)的 CICS TS V4.2 及更高版本,您可以使用来自分布式应用程序的 SAML 断言来提供更精细的访问控制。

于 2014-09-08T15:13:25.047 回答