我們有以下情形的架構圍繞討論單獨的Web-API服務:
- 單頁應用(JavaScript的驅動的HTML5應用程序與ASP.NET的WebAPI)
- 獨立REST服務(只的WebAPI)與BusinessLogic,DAL,數據庫連接
- 安全超過天青AD(ADAL)
從單頁應用程序調用REST服務的方式是什麼?
在我們所看到的各種可能性的時刻:直接從客戶端(瀏覽器調用REST的服務通過CORS
1)):
客戶端(瀏覽器) - > REST的服務
...就像這個例子:https://github.com/AzureADSamples/SinglePageApp-WebAPI-AngularJS-DotNet
2)調用從單頁應用程序,然後調用REST的服務的的WebAPI-服務:
客戶端(瀏覽器) - > WebAPI SPA - > REST服務
對於第一個變體,我們看到一些安全問題。 這樣做一般會節省嗎? 如果REST服務位於內部網絡和DMZ中的SPA中,該怎麼辦?
對於第二個變體,這裏有什麼最佳實踐?因爲我們需要這樣的事情對我們的控制器:
SPA控制器示例:
//GET /api/Models
public IQueryable<Model> Get()
{
// Create an HttpClient instance
var resp = client.GetAsync("http://localhost:9472/api/Models").Result;
var result = resp.Content.ReadAsAsync<IList<Model>>().Result.AsQueryable();
return result;
}
REST服務(本地主機:9472)控制器示例:
//GET /api/Models
public IQueryable<Model> Get(){
return _repository.GetAllModels();
}
- >這是正確的方式去做吧?
感謝您的幫助!
親切的問候,彼得
感謝您的回答。我們決定使用第一種情況,因爲我們有DMZ,所以我們需要中間代理。我發佈了關於驗證的後續問題 - > http://stackoverflow.com/questions/29511094/howto-call-from-spa-angularjs-based-azure-ad-protected-to-webapi-webapi- ONL – 2015-04-08 09:42:26