WCF端点确定调用哪个身份验证方法

WCF端点确定调用哪个身份验证方法,wcf,authentication,Wcf,Authentication,我可以从WCF服务内部确定调用该服务的身份验证方法吗 比如, if (Forms Authentication) { //do something } if (WindowsAuthentication) { //do something else } 您可以在WCF服务类内的OperationContext上检查ServiceSecurityContext,并从中确定用户的身份验证方式(如果有) ServiceSecurityContext security = Op

我可以从WCF服务内部确定调用该服务的身份验证方法吗

比如,

if (Forms Authentication) {
  //do something
}

if (WindowsAuthentication) {
  //do something else
}
您可以在WCF服务类内的OperationContext上检查ServiceSecurityContext,并从中确定用户的身份验证方式(如果有)

ServiceSecurityContext security = 
      OperationContext.Current.ServiceSecurityContext;
现在,您可能在安全上下文中有以下内容之一:

首要身份。包含声明集中的标识声明,作为传统的IIIdentity引用。 WindowsIdentity。包含声明集中的标识声明(如果是WindowsIdentity)。 如果您有其他身份验证机制,如证书或联合身份验证,则PrimaryIdentity将包含该机制的合适标识

有关此主题的详细讨论,请参阅第3页的链接。

您可以在WCF服务类内的OperationContext上检查ServiceSecurityContext,并从中确定用户的身份验证方式(如果有)

ServiceSecurityContext security = 
      OperationContext.Current.ServiceSecurityContext;
现在,您可能在安全上下文中有以下内容之一:

首要身份。包含声明集中的标识声明,作为传统的IIIdentity引用。 WindowsIdentity。包含声明集中的标识声明(如果是WindowsIdentity)。 如果您有其他身份验证机制,如证书或联合身份验证,则PrimaryIdentity将包含该机制的合适标识


有关此主题的详细讨论,请参见第3页的链接。

Absolute legend谢谢。我明天早上第一件事就是试试这个。我正在使用此命令进行GMTTried,但OperationContext.Current为null。需要在什么地方设置吗?@Mike Mengell:你们有什么样的服务?肥皂还是休息?什么绑定?如果您的绑定未设置任何安全设置,则PrimaryIdentity和windowsIdentity(或整个ServiceSecurityContext本身)可能为空,但OperationContext应始终存在,谢谢。我明天早上第一件事就是试试这个。我正在使用此命令进行GMTTried,但OperationContext.Current为null。需要在什么地方设置吗?@Mike Mengell:你们有什么样的服务?肥皂还是休息?什么绑定?如果您的绑定没有任何安全设置,则PrimaryIdentity和windowsIdentity(或整个ServiceSecurityContext本身)可能为空,但OperationContext应该始终存在,好吗