[英]Authentication-Authorization issue when dealing with WebAPI
我正在將一個應用程序重新開發為Web應用程序(“先前的”迭代是在VB6中)以在azure上運行。 一項要求是我們僅使用facebook / google身份驗證(OAuth 2.0) 。 另一個業務需求使我將項目分解為以下架構:
這個想法是MVC項目將僅通過javascript / json使用WebAPI! N個MVC項目將僅包含頁面的GET
實現。 沒有模型或其他動作(例如發布)。 換句話說,MVC項目已與其他項目完全斷開連接,並且應該沒有任何智能!
由於(虛假的客戶端和)有限的時間限制,因此選擇此方法。
無論如何,您會注意到“核心”(WebAPI +控制器+ DA)是共享的。 實際上,核心是多租戶服務。 (但請記住斷開的方面!)
我的問題是:如何處理授權? MVC項目和WebAPI之間的聲明傳遞應該怎樣/如何處理? 我在這里迷路了。 經過一番思考,我得出的結論是,我需要使WebAPI項目在這里充當代理,類似於:
www.myClientWebsite.com/Register
www.myWebAPI.com/Register
www.myClientWebsite.com/LoginComplete
或其他內容。 我搞錯了嗎?
在這種情況下,您必須使用OAuth 2進行身份驗證和授權。 是的,您應該在MVC級別進行身份驗證,然后使用令牌來保持其余呼叫的安全性。
在這里,您的MVC應用程序應該從身份提供商(如google)獲得Bearer令牌,然后將其隱藏在表單上的某些位置。 然后,對於您向Web api發出的每個jquery請求,您都必須在請求中發送此承載令牌。
[更新]這被認為是一種駭客,我不鼓勵這樣做。 僅當兩個系統都在同一域中時,此方法才有效。 [\\更新]
如果MVC和Web API都位於不同的域上,則可以考慮使用Azure ACS服務身份在域之間建立信任關系。 然后在請求的有效負載中傳遞用戶聲明的承載令牌。
[更新]這是處理此問題的更好方法,但必須伴隨適當的令牌吊銷和https安全。 [\\更新]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.