ASP.NET 安全性權杖服務網站

注意

請勿在 ASP.NET STS 專案中對專案按一下滑鼠右鍵,而後選取 [新增 STS 參考]。 這樣做將會覆寫 STS 的中繼資料。

在 Visual Studio 中,開啟 [檔案] 功能表,然後依序選取 [新增]、[網站]。 選取 [ASP.NET 安全性權杖服務網站]。

如果查看您的 web.config 檔案,您就會發現其中有多處不同於典型 ASP.NET 網站的 web.config。

  • 已新增下列應用程式設定:

    <appSettings> <add key="IssuerName" value="PassiveSigninSTS"/> <add key="SigningCertificateName" value="CN=STSTestCert"/> <add key="EncryptingCertificateName" value=""/> </appSettings>
    

    STS 會使用預設的憑證來簽署其簽發的權杖。 這份憑證命名為 "STSTestCert",而且會自動新增到憑證存放區以供 STS 使用。 憑證檔案會出現在 STS 專案中。 此檔案的密碼為 "STSTest"。 此檔案不可用於進行生產用練習。 您可以將預設憑證更換成任何其他的憑證。 請確定您的 IIS 處理序使用者可以存取任何上述憑證的私密金鑰。 您也可以選擇建立衍生自 IssuerNameRegistry 的類型,以便對受信任簽發者的憑證執行程式設計式驗證。

  • 所有使用者都已獲得同盟中繼資料的存取權限。 同盟中繼資料包含了與權杖簽署憑證的公開金鑰、STS 所公開的端點,以及已簽發宣告相關的資訊。

    <location path="FederationMetadata"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
    
  • <system.Web>/<assemblies> 元素現在包含了 Microsoft.IdentityModel.dll 組件的參考:

    <add assembly="Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    
  • 指定表單驗證和登入頁面:

    <authentication mode="Forms"> <forms loginUrl="Login.aspx" protection="All" timeout="30" name=".ASPXAUTH" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="default.aspx" cookieless="UseDeviceProfile" enableCrossAppRedirects="false" /> </authentication> <!-- 拒絕匿名使用者。 --> <authorization> <deny users="?" /> </authorization>
    
  • 已新增追蹤,而您可將其取消註解標示來啟用追蹤功能。 如需相關資訊,請參閱 WIF 追蹤HOW TO:啟用追蹤

    <!-- 取消這些程式行的註解標示,以便將 WIF 追蹤啟用成 WIFTrace.e2e。 使用 SvcTraceViewer.exe 工具 (Microsoft 提供並於 WCF SDK 隨附的功能) 或 xml 檢視器,開啟追蹤檔案。 若要新增 WCF 追蹤功能,請參閱 MSDN。 -->
    
      <!--<system.diagnostics> <sources> <source name="Microsoft.IdentityModel" switchValue="Verbose"> <listeners> <add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="WIFTrace.e2e" /> </listeners> </source> </sources> <trace autoflush="true" /> </system.diagnostics>-->
    

開啟 App_Code 資料夾中的 CustomSecurityTokenService.cs。

  • 更新 static readonly string[] PassiveRedirectBasedClaimsAwareWebApps,以便包含您希望此 STS 為其簽發權杖之信賴憑證者應用程式的 URL。

  • 在 GetOutputClaimsIdentity 方法的覆寫中新增您的信賴憑證者應用程式要求此 STS 進行簽發的宣告,以及您希望您的 STS 簽發的任何自訂宣告。

CustomSecurityTokenService.cs 會實作下列必要方法。

  1. GetScope。這個方法會接受呼叫者的 IClaimsPrincipal 和傳入的 RST,然後傳回該權杖發佈要求的設定,其將由 Scope 類別表示。 在這個方法中,您可以一般化信賴憑證者的位址,並選擇簽署和加密金鑰。 通常安全性權杖會進行加密,如此便只有信賴憑證者可以讀取其內容。

  2. GetOutputClaimsIdentity。這個方法會接受呼叫者的 IClaimsPrincipal、傳入的 RST,以及 GetScope 傳回的 Scope 物件,並且傳回將包含在簽發權杖中的 IClaimsIdentity。 這種方法可讓您決定要在權杖中包含哪些宣告。