2016-03-11 135 views
1

所以,我認爲我在大量方法中迷失了方向,因爲我對所有這些都陌生,但是,我有一個獨立的Auth服務器使用基本身份驗證來進行用戶憑據輸入。OAuth2客戶端UI混淆

然後我有一個非常簡單的客戶端應用程序是成功地重定向到/oauth/authorize,然後做一個後續調用/oauth/token/oauth/check_token作爲流程的一部分。所以我回來了訪問令牌,它看起來不錯。

問題是我無法訪問UI應用中的任何資源,因爲它說我沒有通過身份驗證。我已經添加了這個檢查在控制器的事物狀態:

SecurityContext ctx = SecurityContextHolder.getContext(); 

上下文是說我沒有經過認證(但它確實包含OAuth2Authentication對象持有的訪問令牌等細節)。

,如果我調試多一些,我可以在OAuth2AuthenticationProcessingFilter正試圖通過授權頭,但無法找到它來獲得從請求(BearerTokenExtractor)承載令牌看;我應該在auth服務器驗證後明確設置它嗎?

我錯過了什麼?

非常感謝

回答

0

這意味着你沒有經過你的標頭請求到資源服務器的OAuth2服務器接收的令牌;這是資源服務器可以檢查你是否被授權然後設置適當的安全上下文的機制。

你應該設置以下頭的任何請求,資源服務器:

Authorization: Bearer {your token} 
0

丹尼爾,這許多的感謝。

我有2個問題/問題的後續。

首先,要訪問我標記爲需要驗證的相同(客戶端)應用程序中的資源,我得到'訪問被拒絕'。我可以在Chrome中查看開發工具中的JSESSIONID和XSRF標記。

其次,要訪問遠程資源,我是否需要使用OAuth2RestTemplate,從會話獲取承載?

非常感謝

馬丁

0

爲了完善這一切的時候,我固定的這兩個問題。

  1. 遠程資源;我使用Zuul來代理我附加OAuth令牌的請求。
  2. 地方保護資源;重寫http限制