共用方式為


HOW TO:設定本機簽發者

本主題會說明如何將用戶端設定成使用已發行權杖的本機簽發者。

通常,當用戶端與聯合服務進行通訊時,服務都會指定特定安全性權杖服務的位址,該服務預期會發出用戶端要用來向聯合服務驗證自己的權杖。在某些狀況下,可以用「本機簽發者」(Local Issuer) 來設定用戶端。

在聯合繫結的簽發者位址是 https://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymousnull 的情況下,Windows Communication Foundation (WCF) 就會使用本機簽發者。在這種情況下,您必須設定包含本機簽發者位址的 ClientCredentials,以及用來與該簽發者進行通訊的繫結。

Aa347715.note(zh-tw,VS.100).gif注意:
如果 ClientCredentials 類別的 SupportInteractive 屬性設定為 true、未指定本機簽發者位址,而且簽發者位址是由 wsFederationHttpBinding element 所指定,或是其他的聯合繫結為 https://schemas.xmlsoap.org/ws/2005/05/identity/issuer/self、 https://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous 或 null,這時就會使用 Windows CardSpace 簽發者。

透過程式碼來設定本機簽發者

  1. 建立型別為 IssuedTokenClientCredential 的變數

  2. 將此變數設為從 ClientCredentials 類別的 IssuedToken 屬性傳回的執行個體 (Instance)。該執行個體會由用戶端 (繼承自 ClientBase) 的 ClientCredentials 屬性,或是 ChannelFactoryCredentials 屬性傳回:

    Dim itcc As IssuedTokenClientCredential = client.ClientCredentials.IssuedToken
    
    IssuedTokenClientCredential itcc = client.ClientCredentials.IssuedToken;
    
  3. LocalIssuerAddress 屬性設定為 EndpointAddress 的新執行個體,其本機簽發者位址會當做建構函式 (Constructor) 的引數。

    itcc.LocalIssuerAddress = New EndpointAddress("https://fabrikam.com/sts")
    
    itcc.LocalIssuerAddress = new EndpointAddress("https://fabrikam.com/sts");
    

    或者,建立新的 Uri 執行個體做為該建構函式的引數。

    itcc.LocalIssuerAddress = New EndpointAddress( _
    New Uri("https://fabrikam.com/sts"), addressHeaders)
    
    itcc.LocalIssuerAddress = new EndpointAddress(new Uri("https://fabrikam.com/sts"),
        addressHeaders);
    

    addressHeaders 參數是 AddressHeader 執行個體的陣列,如下所示。

    itcc.LocalIssuerAddress = New EndpointAddress(New Uri("https://fabrikam.com/sts"), _
    EndpointIdentity.CreateDnsIdentity("fabrikam.com"), addressHeaders)
    
    itcc.LocalIssuerAddress = new EndpointAddress(
        new Uri("https://fabrikam.com/sts"),
        EndpointIdentity.CreateDnsIdentity("fabrikam.com"),
        addressHeaders);
    
  4. 使用 LocalIssuerBinding 屬性來設定本機簽發者的繫結。

    itcc.LocalIssuerBinding = New WSHttpBinding("LocalIssuerBinding")
    
    itcc.LocalIssuerBinding = new WSHttpBinding("LocalIssuerBinding");
    
  5. 選擇項,將本機簽發者的已設定端點行為新增到 LocalIssuerChannelBehaviors 屬性所傳回的集合,即可新增該行為。

    itcc.LocalIssuerChannelBehaviors.Add(myEndpointBehavior)
    
    itcc.LocalIssuerChannelBehaviors.Add(myEndpointBehavior);
    

透過組態來設定本機簽發者

  1. 建立 <localIssuer> 項目做為 <issuedToken> 項目的子系,該項目本身則是端點行為中 <clientCredentials> 項目的子系。

  2. address 屬性設定為將接受權杖要求之本機簽發者的位址。

  3. bindingbindingConfiguration 屬性設定為會參考當與本機簽發者端點進行通訊時所使用之適當繫結的值。

  4. 選擇項,將 <identity> 項目設定為 <localIssuer> 項目的子項目,並指定本機簽發者的身分識別資訊。

  5. 選擇項,將 <headers> 項目設定為 <localIssuer> 項目的子項目,並指定在正確定址本機簽發者時所需要其他標頭。

安全性

請注意,如果已指定特定繫結的簽發者位址和繫結,這時使用該繫結的端點就不會使用該本機簽發者。預期一定要使用該本機簽發者的用戶端應該要確定自己沒有使用這類繫結,否則它們就會修改繫結,進而使得簽發者位址成為 null

另請參閱

工作

HOW TO:設定聯合服務的認證
HOW TO:建立聯合用戶端
HOW TO:建立 WSFederationHttpBinding