EndpointIdentity.CreateUpnIdentity(String) Метод

Определение

Создает удостоверение имени участника-пользователя (UPN) с указанным именем.

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

Параметры

upnName
String

Имя идентификатора UPN.

Возвращаемое значение

EndpointIdentity UPN, связанный с заданным классом upnName.

Исключения

upnName имеет значение null.

Примеры

В следующем примере кода показано, как вызвать этот метод.

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

Комментарии

Защищенный клиент WCF, который подключается к конечной точке с этим удостоверением, использует имя участника-пользователя при проверке подлинности SSPI с помощью конечной точки.

Статический метод создает экземпляр UpnEndpointIdentity, вызывая его конструктор UpnEndpointIdentity, с использованием upnName в качестве входного параметра.

Если для upnName задана пустая строка, проверка подлинности возвращается от Kerberos к NTLM, если это возможно. Если AllowNtlm имеет значение false, WCF делает все возможное, чтобы создать исключение, если используется NTLM. Обратите внимание, что установка для данного свойства значения false не предотвращает отправки учетных данных NTLM по сети.

Применяется к