【问题标题】:how to cache authentication information in WCF?如何在 WCF 中缓存身份验证信息?
【发布时间】:2012-03-23 12:21:12
【问题描述】:

我正在使用 Message/Username/Custom MembershipProvider 进行 WCF 服务身份验证。

默认情况下,WCF 对来自客户端的每个调用进行身份验证。

我的自定义 MembershipProvider 访问数据库,用于检查用户名/密码。

因此,对于来自客户端的每次调用,服务都必须访问数据库进行身份验证,随着调用次数的增加,这可能会对性能产生影响。

是否有缓存此身份验证信息的默认方法(可能通过创建票证并使用该票证进行进一步的身份验证,如在 ASP.NET 中)?

【问题讨论】:

    标签: wcf performance security authentication membership-provider


    【解决方案1】:

    您绝对可以将ASP.NET Forms Auth 用于WCF 调用,将令牌保存为随每个请求一起传递的cookie。

    【讨论】:

    • 我可以看到您可以在 WCF 中创建身份验证服务,如何对其他 WCF 服务强制执行身份验证?即当用户尝试访问其他 WCF 服务时,强制服务器检查 cookie 中是否存在有效票证。
    • 您甚至不必使用身份验证服务,真的。这仅用于通过 WCF 服务调用登录。只要您对 .SVC 文件的 URL 使用标准 ASP.NET 授权规则(您可以使用 location 元素对其进行细化),ASP.NET 将处理通过这些 URL 的任何请求的身份验证。
    • 我可以使用 location 元素拒绝访问这些 WCF 服务,但即使在我登录后我也无法授予访问权限。因为 WCF 似乎不会随每个请求发送 cookie 信息。我想我可以在登录后获取 cookie 信息并将其手动添加到每个请求的标头中。还有另一种方法吗?谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-08-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    相关资源
    最近更新 更多