【问题标题】:WCF REST - how best to architect for multiple users but also limit accessWCF REST - 如何最好地为多个用户构建架构,但也限制访问
【发布时间】:2011-11-07 16:14:58
【问题描述】:

我是 WCF 和 REST 新手,所以请原谅任何明显的问题。

我正在尝试创建一个可供客户端使用的 RESTful API。 API 需要仅对经过身份验证的用户可用,因此我认为最好的方法(根据我在过去几天阅读的内容)是使用基于 SSL 的基本身份验证,这很好。

我在面向 .NET 3.5 的 VS2010 中有一个基本的 WCF REST 服务应用程序。 - 这部分内容直接取自http://www.codeproject.com/KB/WCF/BasicAuthWCFRest.aspx

我正在努力理解和区分的是如何对用户进行身份验证,同时根据他们的身份限制客户端可以进行的调用。

因此,客户需要拨打的电话会将一些基本信息从他们的系统传递到我们的系统,每个客户都可以拨打相同的电话,但是我不希望客户 A 能够将信息发布到客户 B 的我们这边的区域,反之亦然。

我打算让两个客户都发布类似以下网址的内容:-

api.mydomain.com/sale/

但是,我想知道这样做是否更清楚更有意义:-

api.mydomain.com/clientA/sale/ api.mydomain.com/clientB/sale/

...如你所见,我很迷茫!

另外,我的示例代码正在使用自定义 MembershipProvider - 我了解 Membership 的基础知识,但同样,我不知道我是否应该以某种方式使用它来限制客户将数据发布到彼此的区域?

对不起,胡扯-太多问题:(

【问题讨论】:

    标签: wcf rest architecture basic-authentication custom-membershipprovider


    【解决方案1】:

    我是这样做的。我使用标准的成员资格提供程序(但您也可以对自定义成员资格提供程序执行相同操作)来验证用户身份,但我不让 IIS 这样做。我自己对用户进行身份验证(作为 REST API 的一部分)并为该用户生成一个令牌,我将其存储在成员数据库中并发送回客户端。

    对于客户端发出的每个请求,它也需要发送一个有效的令牌。由于令牌与用户 ID 一起存储,因此我可以确定令牌是否有效以及发出请求的用户。因此,我可以根据自己的安全规则确定是否允许该请求。

    如果用户只被允许对自己的数据进行特定的请求,那么你不需要发送除了令牌之外的任何识别信息。

    HTH。

    【讨论】:

      【解决方案2】:

      关于授权(授予经过身份验证的用户对特定资源的访问权限)有几种方法。

      您可以通过 web.config 中的 <location> 元素限制对某些区域(目录/URL 路径)的访问,然后使用 <authorization> element 仅允许某些用户或角色(组)访问这些位置。如果位置/用户/角色的数量是可管理的并且不会发生太大变化,则可以。例如:

      <location path="ProtectedPlaces/Foo">
          <system.web>
              <authorization>
                  <allow roles="FooGroup"/>
                  <deny users="*"/>
              </authorization> 
          </system.web>
      </location>
      

      或者,您可以使用基于 API 的方法来做同样的事情。有许多图书馆可以提供帮助,包括AzMan;与角色成员资格提供者属于同一“家族”的授权库;企业库中也有一个。

      This article 可能会有所帮助(请参阅:“第 2 步:根据当前登录的用户角色限制功能”)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-24
        • 2011-03-01
        • 2011-09-21
        • 2020-10-11
        • 1970-01-01
        • 2020-11-28
        相关资源
        最近更新 更多