Dienstidentität und AuthentifizierungService Identity and Authentication

Eines Diensts Endpunktidentitätist ein Wert, der vom Dienst Web Services Description Language (WSDL) generiert.A service's endpoint identityis a value generated from the service Web Services Description Language (WSDL). Dieser an jeden Client weitergegebene Wert wird zum Authentifizieren des Diensts verwendet.This value, propagated to any client, is used to authenticate the service. Nachdem der Client eine Kommunikation mit einem Endpunkt initiiert und der Dienst sich gegenüber dem Client authentifiziert hat, vergleicht der Client den Wert der Endpunktidentität mit dem tatsächlichen Wert, den der Vorgang der Authentifizierung des Endpunkts zurückgegeben hat.After the client initiates a communication to an endpoint and the service authenticates itself to the client, the client compares the endpoint identity value with the actual value the endpoint authentication process returned. Stimmen sie überein, kann der Client sicher sein, dass er Kontakt zu dem erwarteten Dienstendpunkt hergestellt hat.If they match, the client is assured it has contacted the expected service endpoint. Diese Funktion als Schutz gegen Phishing indem verhindert, dass einen Client an einen von einem böswilligen Dienst gehosteten Endpunkt umgeleitet wird.This functions as a protection against phishing by preventing a client from being redirected to an endpoint hosted by a malicious service.

Eine beispielanwendung, die identitätseinstellung veranschaulicht, finden Sie unter Dienstidentitätsbeispiel.For a sample application that demonstrates identity setting, see Service Identity Sample. Weitere Informationen finden Sie unterFor more information aboutEndpunkte und Endpunktadressen, finden Sie unter Adressen. endpoints and endpoint addresses, see Addresses.

Hinweis

Wenn Sie NT LanMan (NTLM) für die Authentifizierung verwenden, wird die Dienstidentität nicht überprüft, weil unter NTLM der Client den Server nicht authentifizieren kann.When you use NT LanMan (NTLM) for authentication, the service identity is not checked because, under NTLM, the client is unable to authenticate the server. NTLM wird verwendet, wenn Computer Teil einer Windows-Arbeitsgruppe sind, oder sie eine ältere Version von Windows ausführen, die die Kerberos-Authentifizierung nicht unterstützt.NTLM is used when computers are part of a Windows workgroup, or when running an older version of Windows that does not support Kerberos authentication.

Wenn der Client einen sicheren Kanal initiiert, um darüber eine Nachricht an einen Dienst zu senden, authentifiziert die Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)-Infrastruktur den Dienst und sendet die Nachricht nur dann, wenn die Dienstidentität der Identität entspricht, die in der vom Client verwendeten Endpunktadresse angegeben ist.When the client initiates a secure channel to send a message to a service over it, the Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) infrastructure authenticates the service, and only sends the message if the service identity matches the identity specified in the endpoint address the client uses.

Der Vorgang der Identitätsverarbeitung umfasst die folgenden Phasen:Identity processing consists of the following stages:

  • Zur Entwurfszeit bestimmt der Cliententwickler die Identität des Diensts aus den (durch WSDL verfügbar gemachten) Metadaten der Endpunkte.At design time, the client developer determines the service's identity from the endpoint's metadata (exposed through WSDL).

  • Zur Laufzeit überprüft die Clientanwendung die Ansprüche der Sicherheitsanmeldeinformationen des Diensts, bevor irgendwelche Meldungen an den Dienst gesendet werden.At runtime, the client application checks the claims of the service's security credentials before sending any messages to the service.

Die Identitätsverarbeitung auf dem Client entspricht der Clientauthentifizierung des Diensts.Identity processing on the client is analogous to client authentication on the service. Ein sicherer Dienst führt so lange keinen Code aus, bis die Anmeldeinformationen des Clients authentifiziert wurden.A secure service does not execute code until the client's credentials have been authenticated. Entsprechend sendet der Client so lange keine Nachrichten an den Dienst, bis die Anmeldeinformationen des Diensts auf der Grundlage dessen, was aus den Metadaten des Diensts im Voraus bekannt ist, authentifiziert wurden.Likewise, the client does not send messages to the service until the service's credentials have been authenticated based on what is known in advance from the service's metadata.

Die Identity-Eigenschaft der EndpointAddress-Klasse stellt die Identität des Diensts dar, der vom Client aufgerufen wird.The Identity property of the EndpointAddress class represents the identity of the service called by the client. Der Dienst veröffentlicht die Identity in seinen Metadaten.The service publishes the Identity in its metadata. Die Ausführung der Cliententwickler die ServiceModel Metadata Utility Tool (Svcutil.exe) für den Dienstendpunkt enthält die generierte Konfiguration den Wert des Diensts Identity Eigenschaft.When the client developer runs the ServiceModel Metadata Utility Tool (Svcutil.exe) against the service endpoint, the generated configuration contains the value of the service's Identity property. Die WCFWCF-Infrastruktur (sofern für Sicherheit konfiguriert) überprüft, ob der Dienst die angegebene Identität besitzt.The WCFWCF infrastructure (if configured with security) verifies that the service possesses the identity specified.

Wichtig

Die Metadaten enthalten die erwartete Identität des Diensts. Daher wird empfohlen, die Metadaten des Diensts auf sichere Weise verfügbar zu machen, indem Sie beispielsweise einen HTTPS-Endpunkt für den Dienst erstellen.The metadata contains the expected identity of the service, so it is recommended that you expose the service metadata through secure means, for example, by creating an HTTPS endpoint for the service. Weitere Informationen finden Sie unterFor more information, seeWie: sichere Metadatenendpunkte. How to: Secure Metadata Endpoints.

IdentitätstypenIdentity Types

Ein Dienst kann fünf Identitätstypen bereitstellen.A service can provide five types of identities. Jeder Identitätstyp entspricht einem Element, das im <identity>-Element der Konfiguration enthalten sein kann.Each identity type corresponds to an element that can be contained inside the <identity> element in configuration. Der verwendete Typ hängt vom Szenario und den Sicherheitsanforderungen des Diensts ab.The type used depends on the scenario and the service's security requirements. In der folgenden Tabelle wird jeder dieser Identitätstypen beschrieben.The following table describes each identity type.

IdentitätstypIdentity type BeschreibungDescription Typisches SzenarioTypical scenario
DNS (Domain Name System)Domain Name System (DNS) Verwenden Sie dieses Element mit X.509-Zertifikaten oder Windows-Konten.Use this element with X.509 certificates or Windows accounts. Es vergleicht den in den Anmeldeinformationen angegebenen DNS-Namen mit dem in diesem Element angegebenen Wert.It compares the DNS name specified in the credential with the value specified in this element. Eine DNS-Prüfung ermöglicht Ihnen, Zertifikate mit DNS- oder Antragstellernamen zu verwenden.A DNS check enables you to use certificates with DNS or subject names. Wird ein Zertifikat erneut mit demselben DNS- oder Antragstellernamen ausgestellt, ist die Identitätsprüfung immer noch gültig.If a certificate is reissued with the same DNS or subject name, then the identity check is still valid. Bei der erneuten Ausstellung eines Zertifikats erhält es einen neuen RSA-Schlüssel, behält jedoch denselben DNS- oder Antragstellernamen.When a certificate is reissued, it gets a new RSA key but retains the same DNS or subject name. Dies bedeutet, dass Clients ihre Identitätsinformationen für den Dienst nicht aktualisieren müssen.This means that clients do not have to update their identity information about the service.
Zertifikat.Certificate. Der Standardwert, wenn ClientCredentialType auf Certificate festgelegt ist.The default when ClientCredentialType is set to Certificate. Dieses Element gibt einen Base64-codierten X.509-Zertifikatswert für den Vergleich mit dem Client an.This element specifies a Base64-encoded X.509 certificate value to compare with the client.

Verwenden Sie dieses Element auch dann, wenn Sie eine CardSpaceCardSpace für die Anmeldeinformationen zur Authentifizierung des Diensts verwenden.Also use this element when using a CardSpaceCardSpace as a credential to authenticate the service.
Dieses Element schränkt die Authentifizierung auf ein einziges Zertifikat ein, dessen Fingerabdruckwert für die Authentifizierung verwendet wird.This element restricts authentication to a single certificate based upon its thumbprint value. Dies ermöglicht eine strengere Authentifizierung, da Fingerabdruckwerte eindeutig sind.This enables stricter authentication because thumbprint values are unique. Damit ist eine Einschränkung verbunden: Wird das Zertifikat mit dem gleichen Antragstellernamen erneut ausgestellt, hat es auch einen neuen Fingerabdruck.This comes with one caveat: If the certificate is reissued with the same Subject name, it also has a new Thumbprint. Daher können Clients den Dienst so lange nicht prüfen, bis der neue Fingerabdruck bekannt ist.Therefore, clients are not able to validate the service unless the new thumbprint is known. Weitere Informationen finden Sie unterFor more information aboutSuchen den Fingerabdruck eines Zertifikats, finden Sie unter wie: Abrufen des Fingerabdrucks eines Zertifikats. finding a certificate's thumbprint, see How to: Retrieve the Thumbprint of a Certificate.
ZertifikatsverweisCertificate Reference Identisch mit der vorher beschriebenen Zertifikatsoption.Identical to the Certificate option described previously. Jedoch erlaubt Ihnen dieses Element, einen Zertifikatsnamen und den Speicherort anzugeben, von dem das Zertifikat abgerufen werden kann.However, this element enables you to specify a certificate name and store location from which to retrieve the certificate. Entspricht dem vorher beschriebenen Zertifikatsszenario.Same as the Certificate scenario described previously.

Der Vorteil besteht darin, dass sich der Speicherort des Zertifikats ändern kann.The benefit is that the certificate store location can change.
RSARSA Dieses Element gibt einen RSA-Schlüsselwert für den Vergleich mit dem Client an.This element specifies an RSA key value to compare with the client. Dies ist der Zertifikatsoption ähnlich, statt des Fingerabdrucks des Zertifikats wird jedoch dessen RSA-Schlüssel verwendet.This is similar to the certificate option but rather than using the certificate's thumbprint, the certificate's RSA key is used instead. Eine RSA-Prüfung erlaubt Ihnen, die Authentifizierung speziell auf den RSA-Schlüssel eines einzigen Zertifikats zu beschränken.An RSA check enables you to specifically restrict authentication to a single certificate based upon its RSA key. Dies ermöglicht eine strengere Authentifizierung eines bestimmten RSA-Schlüssels auf Kosten des Diensts, der nicht mehr mit vorhandenen Clients zusammenarbeitet, wenn sich der RSA-Schlüsselwert ändert.This enables stricter authentication of a specific RSA key at the expense of the service, which no longer works with existing clients if the RSA key value changes.
Benutzerprinzipalname (User Principal Name, UPN)User principal name (UPN). Der Standard, wenn ClientCredentialType auf Windows festgelegt ist und der Dienstprozess nicht unter einem der Systemkonten ausgeführt wird.The default when the ClientCredentialType is set to Windows and the service process is not running under one of the system accounts. Dieses Element gibt den UPN an, unter dem der Dienst ausgeführt wird.This element specifies the UPN that the service is running under. Siehe den Abschnitt Kerberos-Protokoll und die Identität des Überschreiben der Identität eines Dienstes zur Authentifizierung.See the Kerberos Protocol and Identity section of Overriding the Identity of a Service for Authentication. Dies stellt sicher, dass der Dienst unter einem bestimmten Windows-Benutzerkonto ausgeführt wird.This ensures that the service is running under a specific Windows user account. Das Benutzerkonto kann entweder das des momentan angemeldeten Benutzers sein, oder der des Diensts, der unter einem bestimmten Benutzerkonto ausgeführt wird.The user account can be either the current logged-on user or the service running under a particular user account.

Diese Einstellung nutzt die Vorteile der Kerberos-Sicherheit von Windows, wenn der Dienst unter einem Domänenkonto in einer Active Directory-Umgebung ausgeführt wird.This setting takes advantage of Windows Kerberos security if the service is running under a domain account within an Active Directory environment.
Dienstprinzipalname (Service Principal Name, SPN)Service principal name (SPN). Der Standard, wenn ClientCredentialType auf Windows festgelegt ist und der Dienstprozess unter einem der Systemkonten – LocalService, LocalSystem oder NetworkService – ausgeführt wird.The default when the ClientCredentialType is set to Windows and the service process is running under one of the system accounts—LocalService, LocalSystem, or NetworkService. Dieses Element gibt den dem Konto des Diensts zugeordneten SPN an.This element specifies the SPN associated with the service's account. Siehe den Abschnitt Kerberos-Protokoll und die Identität des Überschreiben der Identität eines Dienstes zur Authentifizierung.See the Kerberos Protocol and Identity section of Overriding the Identity of a Service for Authentication. Dies stellt sicher, dass der SPN und das bestimmte, dem SPN zugeordnete Windows-Konto den Dienst identifizieren.This ensures that the SPN and the specific Windows account associated with the SPN identify the service.

Sie können das Tool Setspn.exe verwenden, um ein Computerkonto dem Benutzerkonto des Diensts zuzuordnen.You can use the Setspn.exe tool to associate a machine account for the service's user account.

Diese Einstellung nutzt die Vorteile der Kerberos-Sicherheit von Windows, wenn der Dienst unter einem der Systemkonten oder unter einem Domänenkonto ausgeführt wird, dem ein SPN-Name zugeordnet ist, und der Computer Mitglied einer Domäne in einer Active Directory-Umgebung ist.This setting takes advantage of Windows Kerberos security if the service is running under one of the system accounts or under a domain account that has an associated SPN name with it and the computer is a member of a domain within an Active Directory environment.

Angeben der Identität für einen DienstSpecifying Identity at the Service

In der Regel müssen Sie die Identität für einen Dienst nicht festlegen, da die Auswahl eines Clientanmeldeinformationstyps über den in den Dienstmetadaten angezeigten Identitätstyp entscheidet.Typically, you do not have to set the identity on a service because the selection of a client credential type dictates the type of identity exposed in the service metadata. Weitere Informationen finden Sie unterFor more information aboutzum Überschreiben, oder geben Sie die Dienstidentität finden Sie unter Überschreiben der Identität eines Dienstes zur Authentifizierung. how to override or specify service identity, see Overriding the Identity of a Service for Authentication.

Mithilfe der <Identity >-Elements in der KonfigurationUsing the <identity> Element in Configuration

Wenn Sie den Clientanmeldeinformationstyp in der zuvor gezeigten Bindung in Certificate, ändern, enthält die generierte WSDL ein serialisiertes Base64-X.509-Zertifikat als Identitätswert, wie im folgenden Code gezeigt.If you change the client credential type in the binding previously shown to Certificate, then the generated WSDL contains a Base64 serialized X.509 certificate for the identity value as shown in the following code. Dies ist der Standard für alle Clientanmeldeinformationstypen außer Windows.This is the default for all client credential types other than Windows.

Sie können den Wert der standardmäßigen Dienstidentität ändern oder den Typ der Identität mit der <identity> Element in der Konfiguration oder durch Festlegen der Identität im Code.You can change the value of the default service identity or change the type of the identity by using the <identity> element in configuration or by setting the identity in code. Der folgende Konfigurationscode legt eine DNS-Identität (Domain Name System) mit dem Wert contoso.com fest.The following configuration code sets a domain name system (DNS) identity with the value contoso.com.

Programmgesteuertes Festlegen der IdentitätSetting Identity Programmatically

Der Dienst muss nicht explizit eine Identität angeben, da sie von WCFWCF automatisch bestimmt wird.Your service does not have to explicitly specify an identity, because WCFWCF automatically determines it. Allerdings können Sie mit WCFWCF nach Bedarf eine Identität für einen Endpunkt angeben.However, WCFWCF allows you to specify an identity on an endpoint, if required. Mit dem folgenden Code wird ein neuer Dienstendpunkt mit einer bestimmten DNS-Identität hinzugefügt.The following code adds a new service endpoint with a specific DNS identity.

ServiceEndpoint ep = myServiceHost.AddServiceEndpoint(
                typeof(ICalculator),
                new WSHttpBinding(),
                String.Empty);
EndpointAddress myEndpointAdd = new EndpointAddress(new Uri("http://localhost:8088/calc"),
     EndpointIdentity.CreateDnsIdentity("contoso.com"));
ep.Address = myEndpointAdd;
Dim ep As ServiceEndpoint = myServiceHost.AddServiceEndpoint(GetType(ICalculator), New WSHttpBinding(), String.Empty)
Dim myEndpointAdd As New EndpointAddress(New Uri("http://localhost:8088/calc"), EndpointIdentity.CreateDnsIdentity("contoso.com"))
ep.Address = myEndpointAdd

Angeben der Identität für einen ClientSpecifying Identity at the Client

Zur Entwurfszeit ein Cliententwickler in der Regel verwendet die ServiceModel Metadata Utility Tool (Svcutil.exe) zum Generieren von Client-Konfiguration.At design time, a client developer typically uses the ServiceModel Metadata Utility Tool (Svcutil.exe) to generate client configuration. Die generierte Konfigurationsdatei (vorgesehen für die Verwendung durch den Client) enthält die Identität des Servers.The generated configuration file (intended for use by the client) contains the server's identity. Der folgende Code wurde z. B. von einem Dienst generiert, der eine DNS-Identität angibt, wie im vorangehenden Beispiel gezeigt.For example, the following code is generated from a service that specifies a DNS identity, as shown in the preceding example. Beachten Sie, dass der Endpunktidentitätswert des Clients dem des Diensts entspricht.Note that the client's endpoint identity value matches that of the service. Wenn in diesem Fall der Client die Windows (Kerberos)-Anmeldeinformationen für den Dienst erhält, erwartet er den Wert contoso.com.In this case, when the client receives the Windows (Kerberos) credentials for the service, it expects the value to be contoso.com.

Wenn der Dienst statt Windows ein Zertifikat als Clientanmeldeinformationstyp angibt, wird erwartet, dass die DNS-Eigenschaft des Zertifikats den Wert contoso.com hat.If, instead of Windows, the service specifies a certificate as the client credential type, then the certificate's DNS property is expected to be the value contoso.com. (Wenn aber die DNS-Eigenschaft den Wert null hat, muss der Antragstellername des Zertifikats contoso.com lauten.)(Or if the DNS property is null, the certificate's subject name must be contoso.com.)

Verwenden eines bestimmten Werts für die IdentitätUsing a Specific Value for Identity

Die folgende Clientkonfigurationsdatei zeigt, wie erwartet wird, dass die Identität des Diensts ein bestimmter Wert ist.The following client configuration file shows how the service's identity is expected to be a specific value. Im folgenden Beispiel kann der Client mit zwei Endpunkten kommunizieren.In the following example, the client can communicate with two endpoints. Das erste wird mit einem Zertifikatsfingerabdruck, der zweite mit dem RSA-Schlüssel eines Zertifikats identifiziert.The first is identified with a certificate thumbprint and the second with a certificate RSA key. Somit also durch ein Zertifikat, das nur ein privates/öffentliches Schlüsselpaar enthält, jedoch nicht von einer vertrauenswürdige Stelle ausgegeben wurde.That is, a certificate that contains only a public key/private key pair, but is not issued by a trusted authority.

Identitätsprüfung zur LaufzeitIdentity Checking at Run Time

Zur Entwurfszeit bestimmt ein Cliententwickler die Identität des Servers durch dessen Metadaten.At design time, a client developer determines the server's identity through its metadata. Zur Laufzeit wird die Identitätsprüfung ausgeführt, bevor irgendwelche Endpunkte auf dem Dienst aufgerufen werden.At runtime, the identity check is performed before calling any endpoints on the service.

Der Identitätswert ist an den von den Metadaten angegebenen Typ der Authentifizierung gebunden, mit anderen Worten, an den Typ der für den Dienst verwendeten Anmeldeinformationen.The identity value is tied to the type of authentication specified by metadata; in other words, the type of credentials used for the service.

Ist der Kanal für die Authentifizierung mithilfe von Secure Sockets Layer (SSL) auf Nachrichten- oder auf Transportebene mit X.509-Zertifikaten für die Authentifizierung konfiguriert, sind die folgenden Identitätswerte gültig:If the channel is configured to authenticate using message- or transport-level Secure Sockets Layer (SSL) with X.509 certificates for authentication, the following identity values are valid:

  • DNSDNS. WCFWCF stellt sicher, dass das während des SSL-Handshakes bereitgestellte Zertifikat ein DNS- oder CommonName (CN)-Attribut enthält, dessen Wert gleich dem Wert ist, der in der DNS-Identität des Clients angegeben ist. ensures that the certificate provided during the SSL handshake contains a DNS or CommonName (CN) attribute equal to the value specified in the DNS identity on the client. Beachten Sie, dass diese Prüfungen zusätzlich zur Bestimmung der Gültigkeit des Serverzertifikats ausgeführt werden.Note that these checks are done in addition to determining the validity of the server certificate. Standardmäßig überprüft WCFWCF, ob das Serverzertifikat von einer vertrauenswürdigen Stammzertifizierungsstelle ausgegeben wird.By default, WCFWCF validates that the server certificate is issued by a trusted root authority.

  • Zertifikat.Certificate. Während des SSL-Handshakes stellt WCFWCF sicher, dass der Remoteendpunkt exakt den in der Identität angegebenen Wert bereitstellt.During the SSL handshake, WCFWCF ensures that the remote endpoint provides the exact certificate value specified in the identity.

  • Zertifikatsverweis.Certificate Reference. Ebenso wie Zertifikat.Same as Certificate.

  • RSA.RSA. Während des SSL-Handshakes stellt WCFWCF sicher, dass der Remoteendpunkt exakt den in der Identität angegebenen RSA-Schlüssel bereitstellt.During the SSL handshake, WCFWCF ensures that the remote endpoint provides the exact RSA key specified in the identity.

Authentifiziert der Dienst mithilfe von SSL auf Nachrichten- oder auf Transportebene mit Windows-Anmeldeinformationen und handelt er die Anmeldeinformationen aus, sind die folgenden Identitätswerte gültig:If the service authenticates using message- or transport-level SSL with a Windows credential for authentication, and negotiates the credential, the following identity values are valid:

  • DNSDNS. Die Aushandlung übergibt den SPN des Diensts, damit der DNS-Name überprüft werden kann.The negotiation passes the service's SPN so that the DNS name can be checked. Der SPN hat die Form host/<dns name>.The SPN is in the form host/<dns name>.

  • SPN.SPN. Ein expliziter Dienst-SPN wird zurückgegeben, z. B. host/myservice.An explicit service SPN is returned, for example, host/myservice.

  • UPN.UPN. Der UPN des Dienstkontos.The UPN of the service account. Der UPN weist das Format username @ domain.The UPN is in the form username@domain. Wenn der Dienst z. B. mit einem Benutzerkonto ausgeführt wird, kann dies username@contoso.com sein.For example, when the service is running in a user account, it may be username@contoso.com.

Die programmgesteuerte Angabe der Identität (mithilfe der Identity-Eigenschaft) ist optional.Specifying the identity programmatically (using the Identity property) is optional. Wird keine Identität angegeben, und der Clientanmeldeinformationstyp ist Windows, wird als Standard ein SPN verwendet, dessen Wert auf den Hostnamen der Dienstendpunktadresse festgelegt ist, wobei dem Hostnamen das Zeichenfolgenliteral "host/" vorangestellt wird.If no identity is specified, and the client credential type is Windows, the default is SPN with the value set to the hostname part of the service endpoint address prefixed with the "host/" literal. Wenn keine Identität angegeben wird, und der Clientanmeldeinformationstyp ist ein Zertifikat, ist Certificate der Standard.If no identity is specified, and the client credential type is a certificate, the default is Certificate. Dies bezieht sich auf die Sicherheit sowohl auf der Nachrichtenebene als auch auf der Transportebene.This applies to both message- and transport-level security.

Identität und benutzerdefinierte BindungenIdentity and Custom Bindings

Da die Identität eines Diensts von dem verwendeten Bindungstyp abhängt, müssen Sie sicherstellen, dass bei der Erstellung einer benutzerdefinierten Bindung eine entsprechende Identität verfügbar gemacht wird.Because the identity of a service depends on the binding type used, ensure that an appropriate identity is exposed when creating a custom binding. Im folgenden Codebeispiel ist die verfügbar gemachte Identität z. B. nicht kompatibel mit dem Sicherheitstyp, weil die Identität für die sichere Konversations-Bootstrapbindung nicht mit der Identität für die Bindung am Endpunkt übereinstimmt.For example, in the following code example, the identity exposed is not compatible with the security type, because the identity for the secure conversation bootstrap binding does not match the identity for the binding on the endpoint. Die sicheren Konversationsbindung legt die DNS-Identität fest, während das WindowsStreamSecurityBindingElement die UPN- oder SPN-Identität festlegt.The secure conversation binding sets the DNS identity, while the WindowsStreamSecurityBindingElement sets the UPN or SPN identity.

CustomBinding binding = new CustomBinding();
// The following binding exposes a DNS identity.
binding.Elements.Add(SecurityBindingElement.
    CreateSecureConversationBindingElement(
    SecurityBindingElement.
    CreateIssuedTokenForSslBindingElement(
    new IssuedSecurityTokenParameters())));

// The following element requires a UPN or SPN identity.
binding.Elements.Add(new WindowsStreamSecurityBindingElement());
binding.Elements.Add(new TcpTransportBindingElement());
Dim binding As New CustomBinding()
' The following binding exposes a DNS identity.
binding.Elements.Add(SecurityBindingElement.CreateSecureConversationBindingElement(SecurityBindingElement.CreateIssuedTokenForSslBindingElement(New IssuedSecurityTokenParameters())))

' The following element requires a UPN or SPN identity.
binding.Elements.Add(New WindowsStreamSecurityBindingElement())
binding.Elements.Add(New TcpTransportBindingElement())

Weitere Informationen finden Sie unterFor more information aboutzum Stapel von Bindungselementen, die ordnungsgemäß für eine benutzerdefinierte Bindung finden Sie unter Erstellen benutzerdefinierter Bindungen. how to stack binding elements correctly for a custom binding, see Creating User-Defined Bindings. Weitere Informationen finden Sie unterFor more information aboutErstellen einer benutzerdefinierten Bindung mit der SecurityBindingElement, finden Sie unter Vorgehensweise: Erstellen eines SecurityBindingElement für einen angegebenen Authentifizierungsmodus. creating a custom binding with the SecurityBindingElement, see How to: Create a SecurityBindingElement for a Specified Authentication Mode.

Siehe auchSee Also

Vorgehensweise: Erstellen einer benutzerdefinierten Bindung mit dem SecurityBindingElementHow to: Create a Custom Binding Using the SecurityBindingElement
Vorgehensweise: Erstellen eines SecurityBindingElement für einen angegebenen AuthentifizierungsmodusHow to: Create a SecurityBindingElement for a Specified Authentication Mode
Vorgehensweise: Erstellen einer benutzerdefinierten ClientidentitätsüberprüfungHow to: Create a Custom Client Identity Verifier
Ausählen eines AnmeldeinformationentypsSelecting a Credential Type
Arbeiten mit ZertifikatenWorking with Certificates
ServiceModel Metadata Utility-Tool (Svcutil.exe)ServiceModel Metadata Utility Tool (Svcutil.exe)
Erstellen benutzerdefinierter BindungenCreating User-Defined Bindings
Vorgehensweise: Abrufen des Fingerabdrucks eines ZertifikatsHow to: Retrieve the Thumbprint of a Certificate