java - 具有用户特定功能的 JSF Web 应用程序

标签 java security websphere keystore cics

非常广泛,如果我缺乏理解,我深表歉意,但这里是: 我有一个在 CICS 区域的 Liberty 服务器中运行的 Web 应用程序。我希望该应用程序的某些功能是针对特定用户的。例如,如果用户登录到网络应用程序,我希望他们只能根据自己的身份在页面上执行任务。我研究过如何设置角色,但不能很好地掌握它。到目前为止,我已经进行了设置,我的 CICS 中具有 ID 和密码并有权访问该区域的任何用户都可以使用我的 Web 应用程序。我将发布 .xml 安全部分。如果需要更多详细说明,请询问我。

 <security-role>
    <description>All CICS auhenticated users</description>
    <role-name>cicsAllAuthenticated</role-name>
</security-role>
<security-constraint>
    <display-name>xxx.xxxx.xxx.jdbc.web.SecurityConstraint</display-name>
    <web-resource-collection>
        <web-resource-name>xxxx.xxxx.xxxx.xxxx_xxxx.jdbc</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>cicsAllAuthenticated</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

我通过服务器配置中的一些 SAF 注册表和 keystore 设置获取 ID。我只需要知道是否有一种方法可以在 Java 中使用它来授予权限。感谢您的任何想法!

最佳答案

您可以在 Liberty 中使用 SAF 角色映射。这会将 SAF EJBROLE 映射到 Java EE 角色,然后可以使用该角色来保护应用程序的安全。

EJBROLE 到 Java EE 角色的映射是通过 server.xml 元素 safRoleMapper 控制的,例如,SAF 角色映射器:

<safRoleMapper profilePattern="myprofile.%resource%.%role%" toUpperCase="true" />

使用角色admin访问应用程序myapp时的配置文件将是:

myprofile.myapp.admin

有关详细信息,请参阅:Liberty: Controlling how roles are mapped to SAF Profiles 。默认情况下,profilePattern 为 %profilePefix%.%resource%.%role%

在 CICS 中,您应该安装 cicsts:security-1.0 功能部件,因为这也会将 CICS 事务用户映射到 Liberty 用户。

有关在 CICS 中的 Liberty JVM 服务器中配置安全性的更多信息,请参阅:Configuring security for a Liberty JVM server .

要回到您原来的问题,如果您使用 SAF EJBROLE,您应该能够创建一个 SAF 角色映射器,然后在您的 中使用 %role% 匹配的部分>web.xml 保护资源。

您还可以使用

在 JSP 中以编程方式检查访问权限
<% if (request.isUserInRole("role")) { %>
  <!-- Content to display for users in role 'role' -->
<% } %>

关于java - 具有用户特定功能的 JSF Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52410162/

相关文章:

security - Websphere 中 Java 2 安全性、J2EE 安全性和 JAAS J2C 身份验证之间的区别

java - IntelliJ 无法使用 OpenJDK 11 识别 JavaFX 11

java - java -server 标志有意义吗?

Java 泛型 : wildcard<? > vs 类型参数<E>?

mysql - 检索用户提供的数据 : any benefit for prepared statements

security - 如何加密剪贴板?

java - J按钮 : Changing the location of a button

php - 使用已使用 filter_input() 过滤的 htmlspecialchars() 从数据库输出数据

java - jms 消息不移动 websphere 中的队列

apache - 使用 IBM HTTP 服务器防止浏览器 URL 在 SSL 配置中的页面重定向期间更改