EndpointIdentity.CreateUpnIdentity(String) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Cria uma identidade de nome principal de utilizador (UPN) com um nome especificado.
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
Parâmetros
- upnName
- String
O nome da identidade UPN.
Devoluções
Um UPN EndpointIdentity associado ao especificado upnName.
Exceções
upnName é null.
Exemplos
O código seguinte mostra como chamar este método.
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;
}
}
}
Observações
Um cliente WCF seguro que se liga a um endpoint com esta identidade utiliza o UPN ao realizar autenticação SSPI com o endpoint.
Este método estático cria uma instância de UpnEndpointIdentity chamando o seu construtor, UpnEndpointIdentity, usando upnName como parâmetro de entrada.
Se upnName for especificado com uma cadeia vazia, a autenticação recua de Kerberos para NTLM, se possível. Se AllowNtlm for false, o WCF faz um esforço máximo para lançar uma exceção se for usado NTLM. Observe que definir essa propriedade como false pode não impedir que as credenciais NTLM sejam enviadas por fio.