簡體   English   中英

Silverlight,SSL,HTTPS,WCF,MVC和表單身份驗證

[英]Silverlight, SSL, HTTPS, WCF, MVC, and Forms Authentication

我有一個使用窗體身份驗證的MVC 3網站。 用戶登錄並導航到Silverlight 5應用程序。 Silverlight應用程序正在另一個端口上調用啟用Silverlight的WCF服務。 因為我的要求之一是使用Https / SSL,所以我決定將WCF服務移到我的MVC應用程序中的“服務”文件夾中。

要查看服務是否正常運行,我輸入了服務地址。 我收到一條錯誤消息,指出我的服務需要匿名訪問,但是該網站被指定為使用表單身份驗證。 因此,我在服務的web.config中刪除了mexHttpBinding,並向綁定的httpTransport添加了authenticationScheme =“ Negotiate”。 (我還沒去https)。

現在,我得到302,並被重定向到登錄頁面。 看來我的服務提示我尚未登錄。因此,我添加了

routes.IgnoreRoute("{resource}.svc/{*pathInfo}");

routes.IgnoreRoute("Services/");

但這並沒有改變。 我認為該服務說我未通過身份驗證,但是我確定是的。

有人可以解釋我在做什么錯嗎?

當我在本地主機上調試時,所有這些工作正常,但是當部署到服務器時,我無法訪問該服務。

編輯

我可能已經找到了答案。 我在IIS中打開了對我的網站的匿名訪問,並將httpTransport的authenticationScheme更改為默認值(匿名)。 然后我加了

<authorization>
    <deny users="?"/>
</authorization>

隨着

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

這似乎要求對用戶進行身份驗證才能訪問服務。 我現在要檢查我的silverlight應用程序,以確保它可以到達服務並獲取/發布數據。 所有這些都在測試應用程序中,因此我必須相應地更改實際的應用程序。 然后,我將解決ssl / https。

所有這些聽起來對嗎?

編輯2

我必須確保已啟用mex並將aspNetCompatibilityEnabled設置為“ false”,以便在我的silverlight應用程序中更新合同。 但是在更新我的服務之后,我將aspNetCompatibilityEnabled設置為“ true”,並且一切似乎都可以正常工作。

我希望我仍然朝着正確的道路前進...

我最終設置了IIS,以將Web服務添加為父網站下的網站。 然后,我使用父站點的web.config中的Location標記在Web服務上實現表單身份驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM