Share via


EndpointIdentity.CreateUpnIdentity(String) Metodo

Definizione

Crea un'identità del nome principale dell'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

Classe EndpointIdentity UPN associata al parametro upnName specificato.

Eccezioni

upnName è null.

Esempio

Nell'esempio di codice seguente viene mostrato 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 durante l'esecuzione dell'autenticazione SSPI con l'endpoint.

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

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

Si applica a