我使用的春天啓動的後臺和Android設備爲我係統的前端訪問令牌。 現在我面臨使用Spring-OAuth2來保護我的資源服務器的挑戰。
我有一些問題,我想與您討論:
我的知識+ this tutorial是說我應該使用OAuth2.0「密碼」授予類型爲我的移動應用程序獲取訪問令牌。官方spring tutorial for security給出了一個例子,如何獲得訪問令牌使用密碼交付式:客戶端密鑰+清爽的春天的oauth2
$ curl client:[email protected]alhost:8080/oauth/token -d grant_type=password -d username=user -d password=pwd
而且這纔是我的第一個問題:是否有可能使用的密碼交付式不發送「客戶端,以獲得訪問令牌祕密「?
由於客戶端密鑰可以通過反編譯客戶端應用程序進行「反向工程」。無祕密獲取訪問令牌應該是可能的,因爲Facebook SDK for Android在移動應用中也不需要client_secret。
我想在這裏我有一點很難理解爲什麼clientID的+ clientSecret需要包括在上面的要求,因爲,因爲已經有用戶名+包括密碼,它應該有可能生成訪問令牌,那麼,這是否帶來下一級的安全性?這是否意味着以下(示例):我在我的Android客戶端中以Filip身份登錄,並且正在向服務器發送每個請求的訪問令牌A.然後,我以Filip身份登錄到Web客戶端,並嘗試使用訪問令牌A從Web客戶端訪問資源服務器,這是不可能的,因爲訪問令牌A僅針對Android客戶端發佈?
下一個問題是我怎麼能刷新獲得訪問令牌?
我正在嘗試使用下面的命令,但我得到「完全身份驗證是需要訪問此資源。」當我得到新的刷新令牌後,我可以使用刷新令牌再次刷新我的新訪問令牌嗎?
curl -v --data "grant_type=refresh_token&client_id=acme&client_secret=acmesecret&refresh_token=REFRESH_TOKEN" http://localhost:9999/uaa/oauth/token
謝謝