EndpointIdentity.CreateUpnIdentity(String) Methode

Definition

Erstellt eine UPN-Identität (User Principal Name) mit dem angegebenen Namen.

public:
 static System::ServiceModel::EndpointIdentity ^ CreateUpnIdentity(System::String ^ upnName);
public static System.ServiceModel.EndpointIdentity CreateUpnIdentity (string upnName);
static member CreateUpnIdentity : string -> System.ServiceModel.EndpointIdentity
Public Shared Function CreateUpnIdentity (upnName As String) As EndpointIdentity

Parameter

upnName
String

Der Name der UPN-Identität.

Gibt zurück

Eine UPN-EndpointIdentity, die mit dem angegebenen upnName verknüpft ist.

Ausnahmen

upnName ist null.

Beispiele

Der folgende Code zeigt eine Möglichkeit, wie diese Methode aufgerufen werden kann.

namespace TestPrincipalPermission
{
    class PrincipalPermissionModeWindows
    {

        [ServiceContract]
        interface ISecureService
        {
            [OperationContract]
            string Method1();
        }

        class SecureService : ISecureService
        {
            [PrincipalPermission(SecurityAction.Demand, Role = "everyone")]
            public string Method1()
            {
                return String.Format("Hello, \"{0}\"", Thread.CurrentPrincipal.Identity.Name);
            }
        }

        public void Run()
        {
            Uri serviceUri = new Uri(@"http://localhost:8006/Service");
            ServiceHost service = new ServiceHost(typeof(SecureService));
            service.AddServiceEndpoint(typeof(ISecureService), GetBinding(), serviceUri);
            service.Authorization.PrincipalPermissionMode = PrincipalPermissionMode.UseAspNetRoles;
            service.Open();

            EndpointAddress sr = new EndpointAddress(
                serviceUri, EndpointIdentity.CreateUpnIdentity(WindowsIdentity.GetCurrent().Name));
            ChannelFactory<ISecureService> cf = new ChannelFactory<ISecureService>(GetBinding(), sr);
            ISecureService client = cf.CreateChannel();
            Console.WriteLine("Client received response from Method1: {0}", client.Method1());
            ((IChannel)client).Close();
            Console.ReadLine();
            service.Close();
        }

        public static Binding GetBinding()
        {
            WSHttpBinding binding = new WSHttpBinding(SecurityMode.Message);
            binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
            return binding;
        }
    }
}

Hinweise

Ein sicherer WCF-Client, der eine Verbindung mit einem Endpunkt mit dieser Identität herstellt, verwendet den UPN beim Ausführen der SSPI-Authentifizierung mit dem Endpunkt.

Diese statische Methode erstellt eine Instanz von UpnEndpointIdentity, indem sie ihren Konstruktor UpnEndpointIdentity aufruft und dabei upnName als den Eingabeparameter verwendet.

Wenn für upnName eine leere Zeichenfolge angegeben wird, fällt die Authentifizierung nach Möglichkeit von Kerberos auf NTLM zurück. Wenn AllowNtlm der Wert ist false, ist WCF bemüht, eine Ausnahme auszulösen, wenn NTLM verwendet wird. Durch das Festlegen dieser Eigenschaft auf false wird unter Umständen nicht verhindert, dass NTLM-Anmeldeinformationen über die Verbindung gesendet werden.

Gilt für: