Java WebLogic中部署的REST web服务的双重身份验证问题
我有一个restful web服务,它使用Java WebLogic中部署的REST web服务的双重身份验证问题,java,java-ee-6,weblogic11g,basic-authentication,Java,Java Ee 6,Weblogic11g,Basic Authentication,我有一个restful web服务,它使用HTTPBasic身份验证和LDAP提供者进行保护 将应用程序部署到WebLogic后,它会在调用时两次提示进行身份验证 首先是Spring安全,然后是WebLogic服务器 对该主题的进一步调查显示,使用HTTP基本身份验证的客户端请求必须通过WebLogic服务器身份验证,即使未对目标资源启用访问控制。 作为一个选项(答案中提供),可以通过config.xml中的以下配置禁用WebLogic的身份验证: <enforce-valid-basic
HTTPBasic
身份验证和LDAP
提供者进行保护
将应用程序部署到WebLogic后,它会在调用时两次提示进行身份验证
首先是Spring安全,然后是WebLogic服务器
对该主题的进一步调查显示,使用HTTP基本身份验证的客户端请求必须通过WebLogic服务器身份验证,即使未对目标资源启用访问控制。
作为一个选项(答案中提供),可以通过config.xml中的以下配置禁用WebLogic的身份验证:
<enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials>
false
但它将影响部署在同一域中的所有其他应用程序。我只想为一个特定的应用程序
感谢您的建议。尝试在
config.xml
中禁用WebLogic的身份验证:
<enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials>
false
见例
因此,您可以在每个域的基础上打开或关闭此功能。如果您需要针对特定的应用程序,请考虑将该应用程序放置在专用域中。
在添加以下配置后开始工作。但需要在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中添加另一个身份验证方法:
<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config>
谢谢你,willie,但这将对部署在同一容器中的所有其他应用程序禁用weblogic basic auth。实际上,我不想对所有应用程序禁用weblogic auth,但只对特定应用程序禁用weblogic auth。从我提供的链接来看,这听起来像是全有或全无的事情。因此,您可能需要为相关应用程序创建一个专用WebLogic域。无论如何,请更新您的问题,以表明此附加约束。