【问题标题】:Implementing Security in REST?在 REST 中实现安全性?
【发布时间】:2011-04-12 13:35:09
【问题描述】:

我关心如何实施安全措施,可能是身份验证或授权.. 如何实现这些.. 如果您有任何关于 WCF REST 4.0 安全性的想法或链接可以分享,并且如果您已经实现了它也更好。因为我一直试图找出这个主题,所以我发现的只是有关如何使用 3.5 及更低版本实现它的信息,这些信息似乎与我看到的 4.0 示例不同,我尝试过但在实现它时没有意义。

谢谢

【问题讨论】:

  • 我最近也想做同样的事情,结果遇到了 www.dotnetopenauth.net。我认为 SO 使用它。祝你好运!

标签: wcf security authentication rest authorization


【解决方案1】:

关于授权,您可以查看 XACML。

【讨论】:

    【解决方案2】:

    您可能想探索这个 WCF REST 解决方案,它是一个拦截器,用于使用自定义用户数据库实现基本身份验证。

    http://weblogs.asp.net/cibrax/archive/2009/03/20/custom-basic-authentication-for-restful-services.aspx

    该拦截器使用密码对用户进行身份验证,并初始化当前主体,因此您可以使用服务本身的那个来进行授权,或者如果您希望将该逻辑作为可跨多个服务重用的东西,则可以实现 IAuthorizationManager。

    您还会在我的博客中找到一些其他的身份验证方法,例如证书身份验证或 OAuth,它们不太常见。

    谢谢 巴勃罗。

    【讨论】:

    • 你好 Pablo,我通过这种方式传递用户名和密码在客户端实现了安全性: m_RestHttpClient.TransportSettings.Credentials = new System.Net.NetworkCredential("admin", "admin");我现在关心的是如何在服务器端提取此网络凭据
    【解决方案3】:

    因为 REST 是无状态的,所以您不能使用 cookie 或会话 ID。对于所有请求,通常使用 HTTP Basic Authentication 和 HTTPS。

    【讨论】:

    • 感谢这篇文章,所以我得到了 Base64 编码的结果,结果是:QWxhZGRpbjpvcGVuIHNlc2FtZQ== 然后我如何解析这个得到我在这里传递的用户名和密码。这可以在所有方法中实现吗(获取、放置、发布和删除)谢谢
    • @Ravi 你要base64解码功能吗?是的,可以使用所有 HTTP 方法发送 HTTP 标头元素(如身份验证元素)。
    • @Rook 感谢您的回复。是的,你在评论中说的实现 HTTP 基本身份验证和 HTTPS 的 base64 函数。
    • @Ravi 什么? SO不会为您编写代码。每个 http 开发平台都已经存在基本身份验证。 (msdn.microsoft.com/en-us/library/ms733775.aspx)
    • 我找到了如何通过这个:private HttpClient m_RestHttpClient = new HttpClient("localhost:17471/ProductService/"); m_RestHttpClient.TransportSettings.Credentials = new System.Net.NetworkCredential("admin", "admin" );
    猜你喜欢
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    相关资源
    最近更新 更多