我正在尝试在Web应用程序中实现身份验证机制,我正在WebLogic 12c实例上进行部署。我想限制只有经过身份验证的用户访问某些页面。
我的问题在于弄清楚如何定义我的安全部分的auth-constraint来执行此操作。这是我的web.xml的安全部分:
<security-constraint>
<web-resource-collection>
<web-resource-name>secure</web-resource-name>
<url-pattern>/secure/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<description>Any User</description>
<role-name>user</role-name>
</security-role>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>myrealm</realm-name>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/auth_error.html</form-error-page>
</form-login-config>
</login-config>
现在,身份验证工作正常,但是当我尝试访问任何安全页面时,我得到403 - Forbidden,我很确定这是因为我没有任何用户映射到“用户” “角色。我已经尝试为角色名称指定通配符(*),但这不起作用。
我宁愿不必在WebLogic端配置任何映射。 WebLogic文档指定有一个特殊的“经过身份验证的角色”会自动提供给任何进行身份验证的用户(请参阅http://docs.oracle.com/cd/E14571_01/core.1111/e10043/introroles.htm#CJAGGDCA)
该文档适用于11g - 与12c中的角色相同吗?如果是这样,我可以在我的web.xml中引用它来授予任何经过身份验证的用户的访问权限吗?它的角色名称是什么?
答案 0 :(得分:8)
我相信我找到了解决方案。
我没有确定默认身份验证角色的名称,但WebLogic中似乎有一个名为“users”的隐式组,默认情况下所有用户都属于该组。该组似乎不会显示在管理控制台中的任何位置,但默认情况下所有用户似乎都属于它。
在我的web.xml中,我定义了“authenticated-users”角色(名称并不重要)。然后,在weblogic.xml中,我将该角色映射到“users”组。这允许任何经过身份验证的用户访问受“authenticated-users”约束保护的任何页面。
我只是使用FORM身份验证对此进行了测试,但我没有看到任何理由为什么它也不适用于其他方法。
<强>的web.xml:强>
<security-constraint>
<web-resource-collection>
<web-resource-name>secure</web-resource-name>
<url-pattern>/secure/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>authenticated-users</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<description>Any User</description>
<role-name>authenticated-users</role-name>
</security-role>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>myrealm</realm-name>
<form-login-config>
<form-login-page>/login_form.html</form-login-page>
<form-error-page>/login_error.html</form-error-page>
</form-login-config>
</login-config>
<强> weblogic.xml中强>
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wls="http://www.bea.com/ns/weblogic/90"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
<wls:security-role-assignment>
<wls:role-name>authenticated-users</wls:role-name>
<wls:principal-name>users</wls:principal-name>
</wls:security-role-assignment>