Condividi tramite


EndpointIdentity.CreateUpnIdentity(String) Metodo

Definizione

Crea un'identità del nome dell'entità utente (UPN) con un nome specificato.

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

Parametri

upnName
String

Nome dell'identità UPN.

Restituisce

UPN EndpointIdentity associato all'oggetto specificato upnName.

Eccezioni

upnName è null.

Esempio

Il codice seguente illustra come chiamare questo metodo.

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

Commenti

Un client WCF sicuro che si connette a un endpoint con questa identità usa l'UPN quando si esegue l'autenticazione SSPI con l'endpoint.

Questo metodo statico crea un'istanza di UpnEndpointIdentity chiamando il relativo costruttore, UpnEndpointIdentity, usando upnName come parametro di input.

Se upnName viene specificato con una stringa vuota, l'autenticazione esegue il fallback da Kerberos a NTLM, se possibile. Se AllowNtlm è false, WCF esegue il massimo sforzo per generare un'eccezione se viene usato NTLM. Si noti che l'impostazione di questa proprietà su false potrebbe non impedire l'invio delle credenziali NTLM sulla rete.

Si applica a