EndpointIdentity.CreateUpnIdentity(String) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
使用指定的名稱建立使用者主要名稱 (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 驗證時使用 UPN。
這個靜態方法會使用 UpnEndpointIdentity 做為輸入參數來呼叫其建構函式 UpnEndpointIdentity,藉此建立 upnName
的執行個體。
如果是以空字串指定 upnName
,則驗證程序會盡可能從 Kerberos 退回使用 NTLM。 如果 為 AllowNtlm false
,WCF 會盡最大努力在使用 NTLM 時擲回例外狀況。 請注意,將此屬性設為 false
,不一定能夠禁止 NTLM 認證透過網路傳送。