Servlets Bluemix上的Liberty-如何使用部署.EAR项目来保护Web上下文

Servlets Bluemix上的Liberty-如何使用部署.EAR项目来保护Web上下文,servlets,ibm-cloud,websphere-liberty,ibm-wdt,Servlets,Ibm Cloud,Websphere Liberty,Ibm Wdt,我对部署到Bluemix环境中的Liberty服务器的上下文保护定义表示怀疑,主要是考虑到这些设置将触发的登录和授权功能。对于Liberty,所有配置都放在单个server.xml安装文件中 Eclipse选项“Dynamic Web Project”生成的部署结构如下所示: . WebSphere Application Server Packaged on Bluemix (Utilities: Package on Bluemix Server) .. LibertyStarterClau

我对部署到Bluemix环境中的Liberty服务器的上下文保护定义表示怀疑,主要是考虑到这些设置将触发的登录和授权功能。对于Liberty,所有配置都放在单个server.xml安装文件中

Eclipse选项“Dynamic Web Project”生成的部署结构如下所示:

. WebSphere Application Server Packaged on Bluemix (Utilities: Package on Bluemix Server)
.. LibertyStarterClaudeEAR (.ear)
... LiberyStarterClaude (.war)  
404 Not Found: Requested route ('xyzxyz.mybluemix.net') does not exist. 
应用程序为部署生成了一个.ear存档文件。在这里面 归档web应用程序本身有一个.war文件,实际上它是来自Bluemix示例存储库的一个简单的“hello world”。在不使用应用程序和应用程序bnd语句的情况下,web屏幕显示正确,一旦应用程序语句处于活动状态,我会收到一条错误消息,如下所示:

. WebSphere Application Server Packaged on Bluemix (Utilities: Package on Bluemix Server)
.. LibertyStarterClaudeEAR (.ear)
... LiberyStarterClaude (.war)  
404 Not Found: Requested route ('xyzxyz.mybluemix.net') does not exist. 
以下是我希望添加到server.xml的上下文定义:

<!--  Nov. 21 2016 the next section adds the web context authorization -->   
<application type="war" id="LibertyStarterClaude" name="LibertyStarterClaude" location="${server.config.dir}/apps/LibertyStarterClaude.war">
  <application-bnd>
    <security-role name="All Role">
      <special-subject type="ALL_AUTHENTICATED_USERS" />
    </security-role>
  </application-bnd> 
</application> 
。。重新启动

我的测试表明,.ear归档文件有一个重复条目,因为应用程序标记支持读取.ear归档文件。新的定义是:

`<application` location="${server.config.dir}apps/LibertyStarterClaudeEAR.ear" type="ear">
  <application-bnd>
    <security-role name="AllAuthenticated">
      <special-subject type="ALL_AUTHENTICATED_USERS"/>
    </security-role>
  </application-bnd> 
</application> 
`
注释原始项目设置中的重复.ear加载:

<!--  enterpriseApplication id="LibertyStarterClaudeEAR" location="LibertyStarterClaudeEAR.ear" name="LibertyStarterClaudeEAR"/ -->

要设置安全性,您需要定义安全角色、安全约束、身份验证方法以及应用程序绑定。您只提到了应用程序绑定部分。我不确定你是否完成了其余的工作。您可以参考本文档了解如何设置其余部分:


对于您的应用程序,您希望作为EAR部署还是作为独立WAR部署?在动态web项目结构上,您似乎在使用EAR。但是,在您拥有的applicationbindingconfig元素上,它已被转换为一个独立的WAR应用程序,而没有EAR。我建议您保留原始的EnterpriseApplication元素,只需在该元素下添加application bnd部分,而不是定义新的application元素。原因是直接在服务器配置文件上更改应用程序类型将使工具设置与服务器配置不同步。如果您想在不使用EAR的情况下作为独立WAR部署,请在Servers视图中从服务器中删除EAR,然后首先将WAR添加到服务器。然后,您可以在WAR定义下添加应用程序bnd部分,以保持工具和配置设置同步。

您可以粘贴推送命令和输出吗?404意味着推动没有成功。在按下ear之后,您应该能够转到app.mybluemix.net/libertyStarterClaude。您已经添加了由Eclipse服务器命令启动的“push”命令执行所产生的控制台消息:“实用程序:IBM Bluemix服务器上的包”。我已删除了部署.ear存档的重复项,并删除了应用程序标记处的id和名称参数。现在web应用程序启动时没有错误。激活身份验证拦截功能(登录重定向)仍有问题,该功能应通过对所有通过身份验证的用户的上下文保护使用OpenId Connect功能激活。感谢指导。我已经为项目区域中的web.xml文件(Java EE部署描述符)添加了所需的标记,并向openidConnect客户端添加了一个sslRef条目,该条目引用了一个ssl条目,该条目指向用于IdP服务器证书的信任存储。该应用程序现在正在使用基于OIDC的登录身份验证流。