C# WCF UserNamePasswordValidator是否需要检查PrimaryIdentity.IsAuthenticated?
目前,我有一个使用C# WCF UserNamePasswordValidator是否需要检查PrimaryIdentity.IsAuthenticated?,c#,wcf,validation,authentication,operationcontract,C#,Wcf,Validation,Authentication,Operationcontract,目前,我有一个使用UserNamePasswordValidator对客户端用户进行身份验证的服务。验证代码如下所示: public override void Validate(String userName, String password) { if (userName == null) || (password == null) throw new FaultException("Username and/or password not speci
UserNamePasswordValidator
对客户端用户进行身份验证的服务。验证代码如下所示:
public override void Validate(String userName, String password)
{
if (userName == null) || (password == null)
throw new FaultException("Username and/or password not specified.");
if (userName != "test") && (password != "tset")
throw new FaultException("Invalid username and/or password.");
}
正如您所看到的,当出现问题时,代码总是抛出异常
现在问一下问题-是否有任何理由我应该检查ServiceSecurityContext.Current.PrimaryIdentity.IsAuthenticated
在我的OperationContract
函数中是否为真?比如说,
public interface IMyService
{
[OperationContract]
void myOpContract();
}
public class MyService : IMyService
{
public void myOpContract()
{
// Do I really need this conditional statement?
if (ServiceSecurityContext.Current.PrimaryIdentity.IsAuthenticated)
// Proceed as expected
else
// Fail?
}
}
如果有任何帮助,我们将不胜感激。从本文中的一些评论以及各种测试中可以看出,
if([…]PrimaryIdentity.IsAuthenticated)
部分不是必需的。在UserNamePasswordValidator
中抛出错误可以中止安全协商
但是,代表作者的一个好主意是,如果将来添加新绑定(连接类型)时没有安全性,则保留if([…]PrimaryIdentity.IsAuthenticated)
条件语句会有所帮助