2017-10-04 115 views
0

我有我的彈簧安置下面的配置在這裏我想有我所有的網絡服務要經過基本身份驗證:越來越HTTP 403訪問被拒絕彈簧安置服務

彈簧sec.xml

<http auto-config="true" use-expressions="true"> 
     <intercept-url pattern="/*" access="hasRole('ROLE_ADMIN')"/> 
     <http-basic/> 
    </http> 

    <!-- Authentication manager --> 
    <authentication-manager> 
     <authentication-provider> 
     <user-service> 
      <user name="admin" password="admin" authorities="ROLE_ADMIN"/> 
      <user name="rest" password="rest" authorities="ROLE_REST"/> 
      <user name="user" password="user" authorities="ROLE_USER"/> 
     </user-service> 
     </authentication-provider> 
    </authentication-manager> 

對於我的客戶端代碼,我有以下幾點:

String encoding = Base64.getEncoder().encodeToString(("admin:admin").getBytes()); 

     String authHeader = "Basic " + encoding; 

     System.out.println(authHeader); 

     HttpPost post = new HttpPost(uri); 
     post.setHeader("Content-Type", "application/octet-stream; boundary=\"---Content Boundary\""); 
     post.setHeader("Authorization", authHeader); 

我所有的客戶端的執行越來越HTTP 40 3訪問被拒絕,但從代碼中,我已經使用配置的用戶名和密碼。我也從hasRole改爲hasAuthority,但無濟於事。請在此幫助。謝謝!

web.xml中:

<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/root-context.xml, /WEB-INF/spring/appServlet/spring-sec.xml</param-value> 
    </context-param> 
     <!-- Spring Security filter --> 
    <filter> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 
+0

在這裏體會一些幫助,謝謝! –

回答

0

設法找到這一問題及其對我的春季安全xml配置。從403錯誤,它聲明「無法驗證提供的CSRF令牌,因爲您的會話沒有在春季安全中找到」。

由於Web服務僅供非瀏覽器客戶端使用,因此我在xml配置中禁用了csrf,那麼它就像一個魅力!

只想知道這是否會爲我的網絡服務保存?一個csrf函數如何?