2013-01-02 56 views
2

我有麻煩Windows身份驗證框架寫在某些情況下FedAuth餅乾。我正在開發一套已經使用WIF併成功爲自己的域名編寫FedAuth cookie的MVC4網站。現在我正在嘗試爲我的套件中的每個域編寫cookie。WIF SessionAuthenticationModule的CookieHandler不寫FedAuth使用網站

在我的機器,我有IIS7.5本地託管的三個網站(app1.mycompany.com,app2.mycompany.com和app3.DIFFDOMAIN.com)。當我登錄到app1時,我將cookie的域名設置爲「mycompany.com」,這意味着均爲 app1和app2已聯合,但我無法找到包含app3的好方法。

FederatedAuthentication.SessionAuthenticationModule 
         .CookieHandler.Domain = "mycompany.com". 


事情我已經注意到/試過至今:

  1. 在APP1,我可以設置域名= 「app1.mycompany.com」 或 「mycompany.com」 和cookie是但如果我將其設置爲其他任何cookie,則不寫因此,在編寫Cookie時,必須對域屬性進行一些基礎驗證。真的嗎??

  2. 我在app3中編寫了一個API服務,從app1調用(例如https://app3.DIFFDOMAIN.com/fedauth),它設置Domain =「DIFFDOMAIN.com」。

    • 當我打電話從瀏覽器的API,cookie將被寫入。
    • 當我打電話使用REST客戶端,從APP1的API,餅乾寫入。
    • 當我從APP1永久重定向到URL APP3,cookie將被寫入(但我真的不希望重定向)。

所以我想我問爲什麼cookie不會使用其他客戶端時,寫還怎麼應該聯合所有域認證?

感謝,
約翰。

回答

1

我不確定是否有你。通常WIF SAM模塊負責處理FedAuth cookie。如果它在您的web配置中正確配置,它會自動執行此操作。 FedAuth cookie包含已發佈的STS令牌。 FAM模塊正在攔截所有請求並將那些需要授權的請求重定向到STS。在STS上進行身份驗證後,SAM模塊正在創建Cookie或與會話的組合(取決於配置),並將其放置在特定域下的客戶端瀏覽器中。 SAM和WAF不負責在所有域上聯合身份驗證,但STS是。 STS將自己的cookie放在客戶端瀏覽器中,因此來自不同域STS的每個成功的調用將取決於用戶登錄的cookie,並自動將令牌發送到具有一組聲明的域。

你必須設置配置爲所有域。只有那個,其他的是WIF的業務。 二是建立你的STS,你可以在網上找到樣品。

爲了詳細得到完整的過程,請把這篇大文章一看: http://msdn.microsoft.com/en-us/magazine/ff872350.aspx

我希望這會幫助你。

0

看來你錯過了2個點(試圖讓more information他們得到更清晰的視圖):

  • 餅乾的作品,以及他們如何使用。試圖爲其他任何客戶端設置一個cookie,而不是僅僅與您通信的客戶端,或者對於除您之外的其他任何域名都被視爲不安全。當您的聯邦應用程序存儲身份驗證數據時,它會將其轉換爲FedAuth Cookie,併發送給經過身份驗證的客戶端。客戶端將cookie發送回後續請求,服務器解包它以「知道」用戶的身份驗證。

  • 聯邦身份驗證如何工作。環境中的每個fedarated應用程序(RP)都會要求STS服務對用戶進行身份驗證。 STS向RP發送一個認證令牌,以某種方式存儲它以便能夠區分它的用戶。

這些關係的兩個是一對一。客戶端應用程序和應用程序STS。不需要與任何其他人共享一個客戶端會話的認證信息。爲什麼?客戶端使用STS進行身份驗證,STS將此信息發送給任何想要驗證此客戶端的RP。這些應用程序不能彼此共享信息,只能使用一個STS。

相關問題