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

一个与指定的 EndpointIdentity 关联的 UPN upnName

例外

upnNamenull

示例

下面的代码演示如何调用此方法。

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 身份验证时使用 UPN。

此静态方法通过调用其构造函数 UpnEndpointIdentity,并使用 UpnEndpointIdentity 作为输入参数创建 upnName 的实例。

如果使用空字符串指定 upnName,则一旦可能,身份验证将从 Kerberos 回退到 NTLM。 false如果是AllowNtlm,WCF 会尽力在使用 NTLM 时引发异常。 请注意,将此属性设置为 false 可能不阻止通过网络发送 NTLM 凭据。

适用于