使用 configDropins 覆盖应用程序绑定安全角色
Override application-bnd security-role using configDropins
我有一个基于 websphere liberty 的应用程序的 docker 图片。默认情况下,此图像使用具有几个示例用户的 basicRegistry 的基本身份验证。
然后将 basicRegistry 组绑定到一个安全角色,如下所示(这个安全角色是从应用程序的 web.xml 中引用的):
<webApplication id="myWebapp" ...>
<application-bnd>
<security-role name="Users">
<group name="Users"/>
</security-role>
</application-bnd>
</webApplication>
现在,在我的环境中,身份验证将在此容器之外处理,因此我想禁用基本的身份验证检查,并向所有可以访问它的人开放。
与其重新打包整个 server.xml,我希望只向 configDropins/override 添加一些配置以禁用 webapp 的身份验证。
尝试之后,我很困惑 whether/how 这应该有效...
这是观察到的行为:
如果我先启动服务器,然后将配置片段添加到 configDropins/override,如下所示:
<webApplication id="myWebapp">
<application-bnd>
<security-role name="Users">
<special-subject type="EVERYONE"/>
</security-role>
</application-bnd>
</webApplication>
然后 webapp 将重新加载并关闭基本身份验证(好)。
但是,当我在 configDropins/override 和 然后 中打包相同的配置片段并启动服务器时,webapp 在启用基本身份验证的情况下启动,并且所有请求都失败并显示HTTP 401 状态。
任何人都可以帮助我理解这种行为and/or提供替代方法吗?
向 security-role 元素添加 "id" 属性应该可以解决此问题。在您的示例中,配置处理后基本上有两个 security-role 元素。安全运行时将根据名称将它们合并在一起,但行为将根据接收到两个安全角色元素的顺序而有所不同。
我有一个基于 websphere liberty 的应用程序的 docker 图片。默认情况下,此图像使用具有几个示例用户的 basicRegistry 的基本身份验证。 然后将 basicRegistry 组绑定到一个安全角色,如下所示(这个安全角色是从应用程序的 web.xml 中引用的):
<webApplication id="myWebapp" ...>
<application-bnd>
<security-role name="Users">
<group name="Users"/>
</security-role>
</application-bnd>
</webApplication>
现在,在我的环境中,身份验证将在此容器之外处理,因此我想禁用基本的身份验证检查,并向所有可以访问它的人开放。 与其重新打包整个 server.xml,我希望只向 configDropins/override 添加一些配置以禁用 webapp 的身份验证。
尝试之后,我很困惑 whether/how 这应该有效... 这是观察到的行为:
如果我先启动服务器,然后将配置片段添加到 configDropins/override,如下所示:
<webApplication id="myWebapp">
<application-bnd>
<security-role name="Users">
<special-subject type="EVERYONE"/>
</security-role>
</application-bnd>
</webApplication>
然后 webapp 将重新加载并关闭基本身份验证(好)。
但是,当我在 configDropins/override 和 然后 中打包相同的配置片段并启动服务器时,webapp 在启用基本身份验证的情况下启动,并且所有请求都失败并显示HTTP 401 状态。
任何人都可以帮助我理解这种行为and/or提供替代方法吗?
向 security-role 元素添加 "id" 属性应该可以解决此问题。在您的示例中,配置处理后基本上有两个 security-role 元素。安全运行时将根据名称将它们合并在一起,但行为将根据接收到两个安全角色元素的顺序而有所不同。