维护WCF客户端和服务之间的身份验证? (工作流程)

时间:2011-01-14 15:17:59

标签: wcf security authentication authorization handshaking

我想做的是:

1)验证客户端对WCF服务的第一次调用,这将基于每个用户而不是基于每个应用程序。

2)检查客户是否有权拨打电话。

3)对于后续的仅授权呼叫,已经在步骤1中进行了先前呼叫的认证。

OR

如果客户端由于某种原因已连接到该服务的其他实例,或者“握手”被破坏以重新进行身份验证。

我希望这是有道理的,这是否隐含地在WCF中使用说用户名和密码身份验证和授权,或者我是否有办法编写自定义的东西?基本上这是为了提高效率。

非常感谢, 河豚

1 个答案:

答案 0 :(得分:2)

这称为安全上下文(或安全会话),并且可以使用消息安全性。唯一的限制是在单个服务实例和客户端代理之间处理会话(所有调用必须在同一代理实例上完成)。

以下是允许安全上下文的一些基本配置:

<wsHttpBinding>
  <binding name="wsHttp">
    <security mode="Message">
      <message clientCredentialsType="UserName" estabilishSecurityContext="true" />
    </security>
  </binding>
</wsHttpBinding>

EstabilishSecurityContext默认为true。当你打开它时,使用WS-SecureConversation协议。第一次调用传递经过身份验证的凭据,并向客户端发出安全令牌。下一次调用使用此安全令牌来提供客户端标识。这种行为对开发人员来说是透明的,因此您根本不需要处理令牌。