加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何使用AJAX调用WCF服务时对用户进行身份验证?

发布时间:2020-12-16 02:51:49 所属栏目:百科 来源:网络整理
导读:我有一个需要从客户端调用的WCF服务(ajax调用). 我想在ASPX页面上使用ScriptManager将ServiceReference添加到WCF服务(或)对WCF服务的 JQuery ajax调用.我想拒绝匿名用户访问WCF服务.在从 JavaScript调用服务方法之前,有没有办法进行用户身份验证?如何从客户
我有一个需要从客户端调用的WCF服务(ajax调用).
我想在ASPX页面上使用ScriptManager将ServiceReference添加到WCF服务(或)对WCF服务的 JQuery ajax调用.我想拒绝匿名用户访问WCF服务.在从 JavaScript调用服务方法之前,有没有办法进行用户身份验证?如何从客户端保护我的WCF服务调用?

解决方法

您可以采取许多措施来保护您的WCF服务.可能最简单的方法是,如果您的服务已经是现有整体ASP.NET应用程序的一部分,那么就是为您的服务启用ASP.NET兼容模式.如果您的ASP.NET应用程序使用身份验证来验证用户(例如表单身份验证),并且您通过会话cookie启用它,那么ASP.NET兼容模式可以帮助您完成大部分工作.

默认情况下,这是禁用的,但您可以通过添加web.config来启用它:

<system.serviceModel>
        ...
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
        ...
</system.serviceModel>

这将为您的应用程序中的所有服务启用兼容模式.您还可以通过设置web.config值并使用服务类上的AspNetCompatibilityRequirements属性而不是接口来逐个服务地启用此服务:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class FooService: IFooService {
}

启用此设置后,您可以访问HttpContext.Current(如ASP.NET页面),并且还会强制在访问.svc文件之前必须对用户进行身份验证(就像在访问任何文件之前必须进行身份验证一样). aspx文件).如果您尝试在未经过身份验证的情况下访问.svc文件,并且您正在使用表单身份验证,则调用方将被重定向到默认登录页面,并且在成功进行身份验证后,将重定向到.svc文件.

这个建议做了一些假设:

>您的服务在ASP.NET应用程序中;
>您正在使用某种类型的ASP.NET身份验证(如表单身份验证)来验证用户的凭据并在cookie中保留验证票证;

这个建议虽然可能不是最安全或最强大的,但可能是最简单的,至少可以在合理的程度上启动和运行并保护您的网站.

这是ASP.NET兼容模式下的一个很好的MSDN library intro article.

如果这样做,也许下一步是研究HMAC认证(这涉及更多的工作和秘密密钥的协调 – 但它肯定更安全恕我直言).这是实施它的一个很好的步骤 – http://blogs.microsoft.co.il/blogs/itai/archive/2009/02/22/how-to-implement-hmac-authentication-on-a-restful-wcf-service.aspx

我希望这有帮助.祝好运!!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读