Compartilhar via


EndpointIdentity.CreateUpnIdentity(String) Método

Definição

Cria uma identidade e nome UPN com um nome 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

O nome da identidade do UPN.

Retornos

EndpointIdentity

Um UPN EndpointIdentity associado ao upnName especificado.

Exceções

upnName é null.

Exemplos

O código a seguir mostra como chamar esse 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;
        }
    }
}

Comentários

Um cliente WCF seguro que se conecta a um ponto de extremidade com essa identidade usa o UPN ao executar a autenticação SSPI com o ponto de extremidade.

Esse método estático cria uma instância chamando UpnEndpointIdentity seu construtor, UpnEndpointIdentityusando upnName como parâmetro de entrada.

Se upnName for especificado com uma cadeia de caracteres vazia, a autenticação retornará de Kerberos para NTLM, se possível. Se AllowNtlm for false, o WCF fará o melhor esforço para gerar uma exceção se o NTLM for usado. Observe que a configuração dessa propriedade false pode não impedir que as credenciais NTLM sejam enviadas pela transmissão.

Aplica-se a