0

對於我最後一年的項目,我開發了一個ASP.NET網站,並且已經使用Windows Identity Foundation實現了單點登錄系統(以類似於教程顯示在這裏:http://www.primaryobjects.com/2013/08/08/using-single-sign-on-with-windows-identity-foundation-in-mvc-net承載WIF身份提供商併爲其生成自簽名證書

這意味着我目前有2個網站,我的標識提供商站點和使用IP的網站,幷包含大部分功能。IP使用X509證書來生成令牌,我已經能夠使用自簽名證書。這是我一直在使用檢索從本地機器證書代碼:

var store = new X509Store(StoreName.My, StoreLocation.LocalMachine); 
     X509Certificate2Collection certificates = null; 
     store.Open(OpenFlags.ReadOnly); 

     try 
     { 
      certificates = store.Certificates; 
      var certs = certificates.OfType<X509Certificate2>().Where(x => x.SubjectName.Name.Equals(subjectName, StringComparison.OrdinalIgnoreCase)).ToList(); 

      if (certs.Count == 0) 
       throw new ApplicationException(string.Format("No certificate was found for subject Name {0}", subjectName)); 
      else if (certs.Count > 1) 
       throw new ApplicationException(string.Format("There are multiple certificates for subject Name {0}", subjectName)); 

      return new X509Certificate2(certs[0]); 
     } 

爲了能夠提出我的項目,我會被邀請主持它在網絡上,但是這將意味着我需要替代我的自簽名證書。

我可以使用諸如天藍色網站之類的東西來託管我的網站,但目前我無法找到一個解決方案,使我能夠在Azure等服務上生成自簽名證書並以編程方式檢索它。

你能否給我一個解決這個問題的建議?

回答

0

理想情況下,您不必創建自己的IDP。你可以使用像ADFS這樣的東西。

Azure AD是一個IDP並擁有自己的證書,因此您不需要創建任何證書。

所有你需要的是元數據,你可以在AppServices/Endpoints下找到URL。

有一個示例here但請注意,這使用WS-Fed OWIN而不是WIF。 (WIF有點老派)。

爲了讓您的生活更輕鬆,您可以通過向global.asax添加代碼來更新web.config programmatically

或者只是將整個解決方案移至Azure中的虛擬機。

+0

是的,我明白你的意思,我同意,在一個真實世界的項目中,我不會通過自己建立一個提供者來浪費時間。我認爲這是一個深入瞭解這個概念的機會,併爲通常沒有人會注意的應用程序的一部分添加了一個轉折點。無論如何,謝謝你的建議。我會給那些Azure虛擬機看一看。 –