2012-04-18 79 views
2

我正在編寫一個API,供我的JavaScript應用程序(相同的域,API位於api.example.com和位置example.com和第三方開發人員(移動設備,桌面設備等))使用。我想使用OAuth,但我不知道在同時使用OAuth和使用我的應用程序時,如何使用相同的原始策略工作流程具有相同來源策略和OAuth的REST API身份驗證

如何在我的Web應用程序中驗證用戶?當我發送用戶名和密碼,我可以檢查請求是否來自我的域名,然後返回令牌嗎?令牌將存儲在Cookie中,並在每次請求時發送回服務器,因此有兩部分:

  1. 如果請求來自我的域,只需檢查令牌,否則拋出HTTP異常。
  2. 如果不是我的域名,請進行OAuth身份驗證。

這可能嗎?我如何去設置這個在asp.net web API? (主要是檢查,如果該請求是在同一個域中的部分)

回答

1

我猜測,登錄到你不使用你的OAuth的Web應用程序,而只是接受用戶名和密碼,並啓動一個會話?如果是這樣,你不必爲自己的網站而煩惱OAuth。

建立會話Cookie在*.example.com是有效的,你應該能夠驗證該cookie上都site.example.comapi.example.com

實施例:

  1. 請求到來時,如果OAuth的驗證是成功的api.example.com/verify_credentials.json
  2. 即成響應。
  3. 如果不是,嘗試Cookie驗證 - 如果成功則投放
  4. 如果兩者均失敗,則返回402 Unauthorized

這裏有一個關於線程之間共享子域的餅乾:ASP.NET Subdomain Cookie (parent and one subdomain)