这个问题不是关于可以做些什么的。一切都很好。我想知道,如果在WCF消息检查器中进行身份验证/授权过程是“可以的”。
目前我正在使用WPF客户端和自托管WCF服务器的客户端/服务器应用程序。使用的协议是Net.Tcp,所有SOAP消息都是AES256消息加密和签名的。此外,所有发送SOAP消息头的消息都经过消息加密和签名。
完整的身份验证流程如下所示:
情况:
在客户端的请求到达任何Web服务操作之前,消息检查器会读取session-id和请求的Web服务操作。然后,它使用可用的singleton-service来确定session-id是否仍然有效以及关联的user-id是否有权执行此webservice操作。如果不是,则抛出错误异常。
问题:
是否有任何错误,要在WCF检查器中执行身份验证/授权过程?
答案 0 :(得分:1)
如果它的工作然后不打破它:)但是为了回答你,我已经提出了一些见解供您考虑:
1-对于不需要身份验证的服务操作,您必须更改检查器代码以将其列入白名单。这与开放式关闭原则相矛盾,在该原则中,您的班级必须开放以进行扩展并关闭以进行修改。
2-如果稍后,您决定修改您的身份验证机制并使用第三方组件,则必须彻底修改拦截器代码。
我通常使用WCF检查器将令牌和其他相关信息传递到我的服务类中,我通常会实现交叉问题(验证,身份验证,授权,日志记录和异常处理)。当您将授权引擎注入服务时,您可以更容易地在需要时首先交换机制,第二个单元测试您的服务方法,而不依赖于您使用的任何身份验证机制。