2015-10-23 22 views
2

哪個是在運營商中實現OAuth2授權的最佳方式?我們已經使用PEP代理保證了我們的後端API,並且我們需要一個有效的令牌。是否wirecloud提供任何平均訪問它,一旦用戶登錄喜歡的東西:Wirecloud中的Oauth2

MashupPlatform.context.getOAuthToken() 

我們儘量避免在操作的邏輯硬編碼的用戶憑據。

回答

1

呀,

雖然,你不能讀取部件/運營商的OAuth2令牌,你可以使用WireCloud的代理,並配置它注入的OAuth2令牌,你到你的請求。要做到這一點,你必須提供以下標題提出請求時:

  • X-FI-WARE-OAuth-Token值應true
  • X-FI-WARE-OAuth-Header-Name是要由被添加到該請求中的頭名OAuth2令牌,在您的情況下:X-Auth-Token,因爲您正在使用PEP代理(雖然OAuth2的正確標頭爲Authorization)。

考慮到匿名用戶沒有有效的OAuth2令牌。另外,如果您正在運行WireCloud的自定義實例,則可以將其配置爲支持多個auth後端。在這種情況下,某些用戶將不會與IdM帳戶相關聯。您可以通過運行以下代碼來檢查當前登錄的用戶是否具有關聯的IdM令牌:MashupPlatform.context.get('fiware_token_available');

還有一種實驗性支持,用於使用儀表板的所有者的OAuth2令牌而不是使用當前記錄的OAuth2令牌用戶。爲此,請使用workspaceowner值添加X-FI-WARE-OAuth-Source標題。

例子:

MashupPlatform.http.makeRequest(url, { 
    requestHeaders: { 
     "X-FI-WARE-OAuth-Token": "true", 
     "X-FI-WARE-OAuth-Header-Name": "X-Auth-Token", 
     "X-FI-WARE-OAuth-Source": "workspaceowner" 
    }, 
    ... 
}); 

未來的考慮:

在生產環境中,使用的OAuth2認證服務應使用HTTPS安全原因而提供服務。因此,如果最終URL使用https架構,我們正在考慮將檢查添加到WireCloud代理中,以僅注入OAuth2令牌。唯一的例外是可以在與WireCloud相同的Intranet中使用的服務。