为Wcf服务添加第二层安全性

时间:2013-03-08 07:44:14

标签: wcf iis wcf-security

我已托管Wcf服务

当用户登录到他的用户帐户时,它是我的wcf服务的第一层安全性。这是正常的Windows登录验证。我想在访问Wcf服务之前提供第二层安全性。第二层安全性可以是用户名检查或用户名和密码检查。另外,在第二层安全性中,如果用户与当前登录的用户相同,则不会要求进行身份验证。否则,请求身份验证作为第二层安全性的一部分。

我应该如何实现这个逻辑?

2 个答案:

答案 0 :(得分:0)

我认为您在询问使用自定义凭据进行身份验证时可以阅读here

答案 1 :(得分:0)

答案取决于您是使用WCF服务(如Web服务器(使用REST,BasicHttpBinding,WSHttpBinding或WebHttpbinding)),还是使用类似网络的协议(如NetNamedPipeBinding)。使用类似网络的协议,您可以建立在用户登录后可以保留的实时会话。

但是,假设您正在使用其中一种以网络为中心的协议,则无法真正设置第一,第二,第n层安全性。您可以发送一个自定义凭据监听器(就像Paramosh指出的那样),在用户访问服务之前捕获用户,但就是这样。在认证事件和请求命中风扇之间,没有其他事件可以说。

所以这就是我的建议:因为http通信几乎总是一组重复的请求和响应,所以在首次联系时进行身份验证,为用户(在他们提交凭据后)提供SessionID(GUID)他们可以随时返回的令牌,只要你愿意。 SessionID令牌需要存储在某个地方的数据库中,并且在每次后续访问时,用户都需要提供该令牌以进行验证,但在此之后,您已经有效地获得了可以防止不必要的入侵的实时会话场景。并且可以通过上面列出的自定义凭据功能检查此SessionID(或您使用的任何内容)。