2014-09-30 94 views
1

我有一個寧靜的Web服務,使用LDAP提供程序使用HTTP Basic身份驗證進行保護。WebLogic中部署的REST Web服務的雙重身份驗證問題

將應用程序部署到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.

作爲一個選項(在回答中提供),WebLogic的認證可以通過下面的配置,config.xml中禁用:

<enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials> 

但它會影響在同一個域中部署的所有其他應用程序。我只想要這個特定的應用程序。

欣賞任何建議。

回答

3

嘗試在​​3210禁用WebLogic的身份驗證:

<enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials> 

見例如

所以,你可以在每個域的基礎上或關閉此。如果您需要定位特定應用,請考慮將該應用放置在專用域中。

+0

謝謝威利但是這將禁用weblogic的基本身份驗證的,以及部署在同一容器中的所有其他應用程序。 – 2014-10-01 06:44:46

+0

實際上我不想禁用所有的weblogic auth,但只針對特定的應用程序。 – 2014-10-01 06:48:01

+0

從我提供的鏈接看,這聽起來像是一場全有或無關的事。因此,您可能需要爲相關應用程序創建專用的WebLogic域。無論如何,請更新您的問題以表明這一額外限制。 – 2014-10-01 07:55:32

0

添加以下配置後開始工作。但需要在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> 

創建的WebLogic描述符文件中WEB-INF \ weblogic.xml中和下面的配置添加。

<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>