EndpointIdentity.CreateUpnIdentity(String) Método

Definición

Crea una identidad de nombre principal de usuario (UPN) con un nombre especificado.

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

Parámetros

upnName
String

Nombre para la identidad UPN.

Devoluciones

EndpointIdentity

UPN EndpointIdentity asociado al upnName especificado.

Excepciones

upnName es null.

Ejemplos

El siguiente código muestra cómo llamar a este método.

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;
        }
    }
}

Comentarios

Un cliente WCF seguro que se conecta a un punto de conexión con esta identidad usa el UPN al realizar la autenticación SSPI con el punto de conexión.

Este método estático crea una instancia de UpnEndpointIdentity llamando a su constructor, UpnEndpointIdentity, utilizando upnName como parámetro de entrada.

Si upnName se especifica con una cadena vacía, la autenticación se retirará de Kerberos a NTLM si es posible. Si AllowNtlm es false, WCF hace un mejor esfuerzo para producir una excepción si se usa NTLM. Tenga en cuenta que, aunque se establezca esta propiedad en false, es posible que se envíen igualmente las credenciales NTLM a través de la conexión.

Se aplica a