移动设备上多个平台的 WCF 安全实现

本文关键字:WCF 安全 实现 平台 移动 | 更新日期: 2023-09-27 18:32:49

我们目前有一大堆WCF REST服务暴露在互联网上。多个移动设备使用这些服务(iOS,Android,Symbian等)以及一系列跨平台解决方案。

我们做的第一件事是确保一切都通过SSL运行。但是,我需要确保调用这些 REST 服务的设备已经过身份验证才能执行此操作。例如,如果我有一个 RetrieveBalance POST 获取身体中人的 ID 号,任何人都可以使用其他 ID 号调用此方法并获得他们的余额。

我需要每次调用基本上在(例如)检索该人的余额之前根据用户名和密码/密码进行身份验证。

在 WCF REST 中是否有一种方法可以执行这样的事情,可以在各种不同的平台上工作?我的想法是在标题中添加用户名和密码,并使用以下命令在服务器上获取它:

 var username = WebOperationContext.Current.IncomingRequest.Headers["Username"];
 var pwd = WebOperationContext.Current.IncomingRequest.Headers["Password"];

有没有更好的方法可以做到这一点?

移动设备上多个平台的 WCF 安全实现

如果您使用的是HTTPS,则可以使用基本身份验证 - 如果您在IIS中托管服务,则具有自定义用户名和密码验证(默认实现需要Windows帐户)会更加棘手,但可以通过自定义模块实现。自托管服务不存在此问题,因为可以实现自定义用户名密码验证程序。

如果您

使用的是<security mode="Transport">那么使用自定义用户/通行证验证器实现基本用户/通行证凭据类型(不需要 IIS 模块)。如果无法做到这一点,最简单的方法是将用户名和密码参数添加到每个服务方法中,并在每次调用时对其进行验证。粗糙,但应该有效。