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。 false
如果是AllowNtlm,WCF 会尽力在使用 NTLM 时引发异常。 请注意,将此属性设置为 false
可能不阻止通过网络发送 NTLM 凭据。