我需要扩展内置的WCF身份验证,以便我的新身份验证可以与内置的身份验证并行工作。
例如,我想允许从注册的IP地址(自定义身份验证)或使用用户名+密码(内置身份验证)进行访问。
我已经成功实现了ServiceAuthenticationManager
和ServiceAuthorizationManager
。
ServiceAuthenticationManager.Authenticate
只是将IPrincipal
实现添加到消息属性中,ServiceAuthorizationManager.CheckAccessCore
将IPrincipal
从传入的消息属性复制到AuthorizationContext
属性中。
然而,对于标准机制,ServiceAuthenticationManager.Authenticate
完全失效,即使我返回authPolicy
或base.Authenticate
调用的结果也是如此。
也许我走错了方向?添加自定义WCF身份验证的正确方法是什么,不影响现有的身份验证方式?如果自定义身份验证失败,如何回退到内置身份验证?