是否可以在 WCF 中实现两因素(或多因素)自定义身份验证?例如,我想使用两种不同的凭据类型对客户端进行身份验证:
1) 用户输入登录名和密码
2) WCF 服务验证登录名+密码
3)如果上一步成功,服务器返回秘密查询(或OTP密码号)
4) 用户为收到的查询输入答案并将其发送到服务器
5) 如果答案正确 - 用户在服务器上通过身份验证。他可以执行服务器方法。
经过身份验证的用户具有安全令牌。在下一次服务器调用中,客户端仅发送服务器安全令牌而没有显式凭据。
我在 msdn 上只找到了一个关于它的参考资料 - http://msdn.microsoft.com/en-us/library/ms788756.aspx
在 .NET Framework 3.5 中,客户端消息可以包含多个给定类型的令牌,以及不同类型的令牌。
此功能支持多种场景,包括:
增量索赔发送。服务上的所有操作都可能需要一组声明,但某些操作可能需要额外的声明。客户端可以获取一个带有初始声明集的已发布令牌,并使用另一个已发布令牌以及调用操作所需的其余声明,而不是为每个操作使用单独的已发布令牌。
多因素身份验证。当客户端在被允许执行操作之前必须从多个发行者那里收集已发行的令牌或具有不同声明集的已发行令牌时。WCF 将颁发的令牌视为令牌类型,因此此方案需要能够在消息中具有两个支持的颁发令牌。
但是没有实际的示例如何实现它:(我只能使用自定义用户凭据进行身份验证。