2

我有一個WebSite(MVC 4)和WebService(Web API)。 WebSite有一個身份驗證Cookie,並在WebSite服務器端代碼調用該服務時將其解密,以便將安全令牌發送到WebService。這工作正常。如何在網站和服務之間共享Ajax驗證

但是,WebSite有JavaScript,我想直接調用WebService。我試過共享MachineKey和Auth信息,但是cookie不通過WebApi傳送。

我的回退是將所有調用通過WebSite路由到WebService;但這很醜,很慢。

任何想法?

+1

WebApi和該網站是否託管在同一個域上? – 2013-02-08 13:31:25

+0

你是說,你不能將這個標記粘貼到請求標題中嗎? – 2013-02-21 20:02:42

+0

是的。儘管如此,我現在已經不再使用相同的域名,而且工作起來。所以,Darin,如果你想做出答案,我會接受它的。 – 2013-02-23 07:13:55

回答

1

正確答案是Darin's。爲了在服務站點和網站之間共享登錄cookie,他們都必須位於同一個域中;所以例如該服務的網站可能會在

http://svc.mysite.com 

並且該網站可能是在

http://www.mysite.com 

然後,瀏覽器將允許兩個站點共享相同的cookie。

另一種方法是讓網站對服務網站進行身份驗證,並獲取可傳遞給javascript的某種類型的令牌。但是,除非您使用HTTPS運行,否則這將非常不安全,因爲令牌可以「清楚地」顯示。

最終機制(以及我認爲最常見的解決方案)將是通過網站路由所有API訪問,但在許多情況下這並不理想。