我有一个安静的Web服务,使用HTTP Basic
提供程序使用LDAP
身份验证进行保护。
将应用程序部署到WebLogic后,它会在调用时提示两次身份验证。
首先是Spring Security然后是WebLogic Server。
对该主题的进一步调查显示,client requests that use HTTP BASIC authentication must pass WebLogic Server authentication, even if access control is not enabled on the target resource.
作为选项(在答案中提供),可以通过config.xml中的以下配置禁用WebLogic的身份验证:
<enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials>
但它会影响在同一域中部署的所有其他应用程序。我只希望这个特定的应用程序。
感谢任何建议。
尝试在config.xml
中禁用WebLogic的身份验证:
<enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials>
参见例如
因此,您可以在每个域的基础上打开或关闭此功能。如果您需要定位特定应用,请考虑将该应用置于专用域中。
添加以下配置后开始工作。但是需要在weblogic控制台中添加新用户,或者我们可以使用默认用户。
在WEB-INF \ web.xml文件中添加了以下配置
<security-constraint>
<display-name>Secure REST Area</display-name>
<web-resource-collection>
<web-resource-name>Secure REST</web-resource-name>
<url-pattern>/api/*</url-pattern>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>Admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>default</realm-name>
</login-config>
<security-role>
<role-name>Admin</role-name>
</security-role>
在WEB-INF \ weblogic.xml中创建了weblogic描述符文件,并添加到配置下方。
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<security-role-assignment>
<role-name>Admin</role-name>
<!-- <principal-name>Administrators</principal-name>-->
<externally-defined/>
</security-role-assignment>
解决方法,在web.xml中添加另一个auth方法:
<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config>
Weblogic的basic-auth提示不会显示,只有你自己。