共用方式為


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。 如果 為 AllowNtlm false ,WCF 會盡最大努力在使用 NTLM 時擲回例外狀況。 請注意,將此屬性設為 false,不一定能夠禁止 NTLM 認證透過網路傳送。

適用於