我想做的是:
1)验证客户端对WCF服务的第一次调用,这将基于每个用户而不是基于每个应用程序。
2)检查客户是否有权拨打电话。
3)对于后续的仅授权呼叫,已经在步骤1中进行了先前呼叫的认证。
OR
如果客户端由于某种原因已连接到该服务的其他实例,或者“握手”被破坏以重新进行身份验证。
我希望这是有道理的,这是否隐含地在WCF中使用说用户名和密码身份验证和授权,或者我是否有办法编写自定义的东西?基本上这是为了提高效率。
非常感谢, 河豚
答案 0 :(得分:2)
这称为安全上下文(或安全会话),并且可以使用消息安全性。唯一的限制是在单个服务实例和客户端代理之间处理会话(所有调用必须在同一代理实例上完成)。
以下是允许安全上下文的一些基本配置:
<wsHttpBinding>
<binding name="wsHttp">
<security mode="Message">
<message clientCredentialsType="UserName" estabilishSecurityContext="true" />
</security>
</binding>
</wsHttpBinding>
EstabilishSecurityContext
默认为true。当你打开它时,使用WS-SecureConversation协议。第一次调用传递经过身份验证的凭据,并向客户端发出安全令牌。下一次调用使用此安全令牌来提供客户端标识。这种行为对开发人员来说是透明的,因此您根本不需要处理令牌。