2014-09-02 93 views
3

CloudFoundry的UAA有一個RemoteTokenServices類(Spring oauth2的一部分),它通過轉到UAA服務器的check_token端點進行授權令牌驗證。 UAA有樣品apiapp應用程序分別作爲資源服務器和客戶端應用程序。爲什麼CF UAA check_token端點需要clientId/clientSecret?

從樣品API的爲spring-servlet.xml:

<bean id="tokenServices" class="org.cloudfoundry.identity.uaa.oauth.RemoteTokenServices"> 
    <property name="checkTokenEndpointUrl" value="${checkTokenEndpointUrl}" /> 
    <property name="clientId" value="app" /> 
    <property name="clientSecret" value="appclientsecret" /> 
</bean> 

你知道爲什麼這個類(和需要這些值在Authorization頭編碼的check_token端點)需要一個clientId和clientSecret ?在我看來,它依賴於來自資源服務器的客戶端應用程序。如果其中一個客戶端機密在這裏被「硬編碼」,我如何使用多個客戶端應用程序?

回答

1

我通過閱讀UAA documentation徹底想通了我自己,我仍然認爲這是令人困惑的UAA示例應用程序:

  • 確定clientid和clientSecret值應該是客戶端ID /祕密樣品作爲資源服務器在API應用API/apiclientsecret)應調用check_token端點時使UAA可以肯定的是,請求被有效作出鑑定本身與基本身份驗證的UAA服務器,註冊資源服務器。
  • 爲了做到這一點,資源服務器還必須在UAA中註冊爲客戶端,其中client_credentials爲授權授予類型。
  • 應該檢查的令牌在POST請求主體中發送。