簡體   English   中英

關於使用OAuth使用自己的API的問題

[英]Questions About Consuming Your Own API with OAuth

我正在為我正在開發的項目構建一個RESTful API,我想讓主應用程序使用API​​,因為:

  1. 這將導致維護一組代碼
  2. 如果我們決定公開第三方開發者的API,那么它已經完成了
  3. 它開辟了制作消費它的移動應用程序的可能性
  4. 我真的想學習如何做到這一點

API將托管在子域https://api.example.com ,主Web應用程序將托管在根域https://example.com

從概念上講,我理解一切是如何工作的,但我的主要問題是如果認證流程將會發生變化。 通常第三方應用程序將:

  1. https://api.example.com/request_token獲取請求令牌
  2. 重定向用戶以在https://api.authenticate.com/authorize上進行身份驗證
  3. 重定向回第三方應用程序
  4. https://api.example.com/access_token獲取訪問令牌

由於我控制兩個域,我可以做類似的事情:

  1. 當用戶登錄https://www.example.com上的登錄屏幕時獲取請求令牌
  2. 用戶使用https://www.example.com上的表單進行身份驗證,該表單調用與https://api.example.com/authorize相同的代碼
  3. 如果憑據有效,則交換請求令牌以獲取訪問令牌
  4. 訪問令牌保存在會話中,並在用戶像往常一樣注銷時到期

第3步感覺它是錯的,因為會有重復的代碼,但不會讓我打開XSS攻擊是https://www.example.com上的登錄表單將數據發送到https://api.example.com因為它們在技術上是不同的域名?

我是不是太復雜了?

我遇到了同樣的問題並像這樣解決了。

1對於使用我的API的第三方應用,他們必須通過OAuth對所有請求進行身份驗證。

2對於我自己的第三方客戶端(移動設備,AIR等) - 他們使用OAuth,區別在於我允許這些客戶端和密碼直接在授權步驟中發送(因此我可以進行本機登錄對話)。 這是因為您的API通過SSL / HTTPS。

3對於我的Web應用程序,我使用cookie身份驗證來訪問API。 即,在登錄后,用戶可以簡單地調用API:urls並獲取JSON / XML。 很適合快速瀏覽API(盡管像APIGee這樣的真正API控制台在那里做得更好)。

我會說你有點過分復雜了。 如果您的代碼正確分離,您可以輕松地在應用程序的服務層上構建一個瘦REST層,同時讓應用程序的控制器成為服務層上的薄層。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM