我有一个 cics 应用程序,我不想开发登录屏幕,而是想通过获取用户 ID 来限制访问,然后验证是否允许他们运行我的应用程序。这可能吗?谢谢
4 回答
在 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 之类的东西来处理。您的本地系统管理员应该能够帮助您进行此设置。
CICS 可以与外部安全管理器对话,例如 RACF、CA-ACF2 或 CA-Top Secret。通过在外部安全管理器中设置正确的规则或配置文件,应用程序通常在事务级别得到保护。
这样,安全操作在应用程序逻辑之外执行。访问权限由安全人员而非应用程序开发人员授予。
继续您对NealB关于多个用户的回答的评论:您的安全管理员可以将所有有问题的用户 ID 添加到一个组中,然后为您的事务定义对该组的访问权限。
你真的应该让你的安全管理处理事务访问。良好的系统设计将安全管理置于应用程序之外。
使用带有安全扩展功能包(集成在 V5.2 中)的 CICS TS V4.2 及更高版本,您可以使用来自分布式应用程序的 SAML 断言来提供更精细的访问控制。