這是我的應用程序結構。 MVC網站和API正在從數據層獲取數據。 WEB API將json數據作爲服務。但我想限制一些在WEB API上的數據訪問。
我在MVC網站上有一個用戶認證機制。但是現在我應該在web api應用程序上創建相同的機制嗎?這是重演自己。
我不知道這些系統是如何工作的。例如Twitter或谷歌喜歡單一登錄和網站和API工作。或者有什麼辦法?
這是我的應用程序結構。 MVC網站和API正在從數據層獲取數據。 WEB API將json數據作爲服務。但我想限制一些在WEB API上的數據訪問。
我在MVC網站上有一個用戶認證機制。但是現在我應該在web api應用程序上創建相同的機制嗎?這是重演自己。
我不知道這些系統是如何工作的。例如Twitter或谷歌喜歡單一登錄和網站和API工作。或者有什麼辦法?
這通常是使用基於令牌的身份驗證完成的。您的MVC應用程序根據與身份提供者相關聯的安全令牌服務(STS)對用戶進行身份驗證(可以是像Google或Facebook這樣的社交身份提供程序,也可以是擁有自己的用戶名/密碼數據庫的服務)。 STS爲該用戶發佈安全令牌以使用該應用程序。令牌是數字簽名的,所以它不能被篡改。
現在,如果應用程序想要調用Web服務,它會將令牌返回給STS並請求服務的新令牌。該令牌通常以JWT令牌的形式出現,您可以將其粘貼到Web API的HTTP請求的Authorization HTTP標頭中。
您打電話的服務配置爲信任STS發出的令牌。它通過驗證令牌是否由它知道的STS發出,令牌用於該服務並且它在有效時間範圍內等來執行此操作。
另請參閱this question。
您可以創建自己的單點登錄機制。請參閱此鏈接http://www.codeproject.com/Articles/630986/Cross-Platform-Authentication-With-ASP-NET-Web-API – 2015-02-05 14:30:15
以下是您需要的一個很好的框架:https://identityserver.github。 IO /文檔/ – 2015-02-05 14:37:49