具有用户特定功能的JSF Webapp

时间:2018-09-19 16:12:08

标签: java security websphere keystore cics

非常广泛,如果我缺乏理解,我深表歉意,但是这里有: 我有一个在CICS区域的Liberty服务器中运行的webapp。我希望该应用程序的某些功能是针对特定用户的。例如,如果用户登录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注册表和密钥库设置来获取ID。我只需要知道是否有一种方法可以在Java中使用它来授予特权。感谢您的任何想法!

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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' -->
<% } %>