2015-06-22 37 views
2

我目前擁有一個使用默認「個人用戶帳戶」選項進行身份驗證的MVC應用程序。這很好,我可以創建用戶,登錄並根據用戶角色限制對控制器的訪問。與Web API共享的MVC身份驗證

我有一個單獨的Web API應用程序,目前不使用任何身份驗證。

這兩個應用程序作爲單獨的站點託管在同一個IIS服務器上。我想將來自MVC應用程序的身份驗證合併到Web API應用程序中,因此在用戶登錄到MVC應用程序後,還可以根據用戶角色訪問Web API應用程序中的相應控制器。

從我一直在閱讀中,我需要在兩個應用程序中設置<authentication mode='Forms'>web.config,並且由於它們位於同一臺服務器上,所以身份驗證會自動在兩者之間共享。我已經嘗試將[Authorize]添加到Web API應用程序的控制器中的一個方法中,通過MVC應用程序登錄並嘗試訪問該方法,但該方法從未輸入。

這就是我一直在尋找:http://www.bipinjoshi.net/articles/436bc727-6de2-4d11-9762-9ee1a1e3cbea.aspx

缺少什麼我在這裏?我希望有人能指出我正確的方向。

+0

如果你的主機在同一臺主機上你的MVC和Web API的連接才能正常工作。但就你而言,事實並非如此。我建議你應該使用持有人Jwt Token在你的web api和mvc之間進行單點登錄。 –

回答

0

您需要從您的MVC應用程序模擬到Web Api應用程序,用戶可以訪問您的Web Api應用程序上的Web API控制器,例如與Web API應用程序中定義爲身份的用戶池。

然後你就可以驗證與網絡憑證的網絡API像波紋管代碼:

WebApiProjectSoapClient client= new WebApiProjectSoapClient(); 
      client.ClientCredentials.Windows.ClientCredential = new NetworkCredential("username", "password"); 
      client.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Identification; 

      client.callSomeMethod(); 

這是例如與Windows模擬。 如果你想嚴格窗體模擬你可以reffer這個鏈接:

Impersonate using Forms Authentication