- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 WCF 服务通过我的 web.config 连接了一个 UserNamePasswordValidator,没问题。在我的验证器中,我覆盖了 Validate,检查凭据并在必要时抛出 FaultException。
例子:
public class CredentialValidator : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
if (userName != "dummy")
{
throw new FaultException<AuthenticationFault>(new AuthenticationFault(), "Invalid credentials supplied");
}
}
}
如果我自己在 .NET 应用程序中使用此服务并提供无效凭据,则会抛出 MessageSecurityException 并显示以下消息:
“从另一方收到了不安全或不正确的安全错误。有关错误代码和详细信息,请参阅内部 FaultException。”
我预期的 FaultException 是 MessageSecurityException 的 InnerException。
有没有办法让客户端只接收 FaultException?
MessageSecurityException 并没有特别描述异常的真正原因(对 SO 的快速搜索会产生各种问题,包括服务器/客户端时间同步..),并且由于第三方将使用该服务,我希望尽可能清楚。
最佳答案
几个月前我遇到了同样的问题,经过一些研究后我得出结论,你可以从验证器代码中抛出任何你想要的东西,但客户端仍然会得到 MessageSecurityException,它根本不包含任何有用的信息。
但是,我们必须让客户知道实际发生了什么 - 1.用户名/密码错误 2.密码过期,需要更改 3. 其他一些自定义应用程序特定状态
因此,我们更改了 CredentialValidator 逻辑,使其仅在情况 1 中抛出异常。在其他情况下,它实际上允许调用真正的 WCF 方法,但我们也会检查密码过期等,以及在以下情况下一些问题已经从方法主体抛出 FaultException。
在我们的例子中,这只适用于使用这种类型的验证的服务是登录服务 - 所以客户总是知道为什么他没有通过身份验证。
关于c# - UserNamePasswordValidator 可以抛出 MessageSecurityException 以外的任何东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8594265/
我正在尝试使用用户名/密码设置带有 BasicHttpBinding 和身份验证的 WCF web 服务。我制作了自定义身份验证类。但是,它永远不会被调用(通过调试验证)。这是我的 web.confi
我正在为 WCF 使用 UserNamePasswordValidator。我的代码是相似的。我用数据库。有谁知道如何在此方法中获取有关当前连接上下文的信息。我想记录不成功调用的IP地址 public
我有一个使用 net tcp 绑定(bind)和自定义 UserNamePasswordValidator 的 Web 服务。用户名和密码由客户端在 Credentials.UserName.User
与 this question 相关,我有一个自定义的 UserNamePasswordValidator 登录到我们的内部 API。作为登录的一部分,我可以发现用户在我们系统中的角色。 我想稍后在
我在 .NET 4 上有一个带有自定义 UserNamePasswordValidator 的 WCF 服务,通过 SSL 和消息安全保护。 UserNamePasswordValidator 接收用
我正在使用 UserNamePasswordValidator 类作为 WCF 的 UserName 安全性的一部分。这一切都很好,类的 Validate 函数被调用并正常工作。 那我怎么才能知道在我
我在 wcf 中使用自定义 UserNamePassword Validator 来实现安全性。为此,我创建了自签名证书。在尝试使用 Web 服务时,我收到以下错误“无法为 SSL/TLS 安全通道建
我在互联网上浏览过但没有运气,我正在尝试找到一种合适的方法来在服务端缓存用户名和密码 token ,这样每次连接到服务时我都不必创建数据库连接。 这就是我要实现的目标: public class Se
我有一个由 Windows 服务托管的 WCF REST 休息服务。它使用自定义 UserNamePasswordValidator 身份验证。 我想在验证时获取客户端 ip 地址: ublic st
我有一个 WCF 服务通过我的 web.config 连接了一个 UserNamePasswordValidator,没问题。在我的验证器中,我覆盖了 Validate,检查凭据并在必要时抛出 Fau
根据 http://msdn.microsoft.com/en-us/library/system.identitymodel.selectors.usernamepasswordvalidator.
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 有关您编写的代码问题的问题必须在问题本身中描述具体问题 - 并包含有效代码以重现该问题。请参阅SSCCE.o
我有一个使用自定义 UsernamePasswordValidator 的 WCF 服务。验证器需要访问我的 Entity Framework 上下文。 我想为整个服务调用创建一个 ObjectCon
我有一个带有 netTcp 绑定(bind)(消息 - 用户名)的 WCF 服务。 我实现了我自己的 UserNamePasswordValidator.Validate 方法,在这个方法中我检查了凭
目前我有一项服务使用 UserNamePasswordValidator 来验证客户端用户。验证代码如下: public override void Validate(String userNam
在为每个 WCF 请求调用 UserNamePasswordValidator.Validate(username, password) 之前,我需要运行一些东西。 我已经尝试使用 IDispatch
我的第一个问题是,是否可以将自定义 UserNamePasswordValidor 与 basicHttpBinding 一起使用? 我有一个使用表单例份验证和自定义成员资格提供程序的 asp.net
我们目前正在使用自定义 UserNamePasswordValidator .这允许消费者在 SOAP header 中指定凭据,如下所示: 2013-04-05T16:
我有一个 WCF 服务,我在其中使用自定义 UserNamePasswordValidator 来验证用户。 public override void Validate(string userName
我发现了一个关于使用自定义用户名/密码 ( A simple WCF service with username password authentication: the things they do
我是一名优秀的程序员,十分优秀!