【问题标题】:WCF/ASP.NET AuthenticationWCF/ASP.NET 身份验证
【发布时间】:2011-06-16 07:32:56
【问题描述】:

我的场景是一个 3 层应用程序,其中数据层是 SQL Server 数据库,中间层是托管在 Windows 服务中的 WCF 应用程序,最后演示文稿是 Asp.Net MVC 应用程序。

像往常一样,中间层是执行所有业务逻辑的层。访问数据库,定义业务规则......等等。

好的,到目前为止一切顺利!但是现在的问题是:在这种情况下,您如何处理安全问题?我的意思是,用户必须登录 ASP.NET 应用程序,但我想不仅在 ASP 中验证它,还想在 WCF 中间层验证它,因为 WCF 服务应该被更多应用程序访问。

我希望用户登录 Asp.Net 应用程序并让 WCF 也知道凭据。 WCF 中是否存在某种类型的会话来指定登录用户?

在这种情况下,专业人士如何处理安全问题?我知道您可以通过消息安全性保护 WCF 服务,但是 Asp.Net 和 WCF 如何在单个登录用户上同步?我想根据用户的授权方式来保护 WCF 操作。

【问题讨论】:

  • 这是一个太大的问题,无法在 SO 上处理 - 它占用了 WCF 培训工具包中的 50 页。建议您先进行一些研究,然后发布您的任何具体问题 - mscerts.net/programming/…
  • N 层应用?什么是N? 2? 3? 20?
  • 这是一个模糊的通用方式,但问题仍然有效。我希望通过 ASP.NET 身份验证的用户作为登录用户通过链向上传递到 WCF 服务。为什么这么难?

标签: asp.net wcf wcf-security


【解决方案1】:

我建议考虑使用 HMAC(哈希消息身份验证代码)之类的方法来确保您的安全性,或者类似的基于令牌的方法。我们的想法是将您的请求签署到您的 WCF 层,该层可用于对请求进行身份验证并识别发出请求的用户。

基本元素是用于签署每个请求的令牌和某种共享机密。该令牌将允许您在 WCF 端识别用户,并查找共享密钥以验证请求。您还可以添加时间戳/随机数来防止重放攻击等。

我已经为一些基于 WCF 构建的 REST 服务使用了这种方法 - 额外的好处是客户端不需要存储用户名和密码,只需要存储用于通信的安全令牌。在您的情况下,您需要弄清楚如何在 ASP.NET 层和 WCF 层之间交换令牌,但它会为您的 WCF 服务的任何消费者提供统一的身份验证方法。

【讨论】:

    【解决方案2】:

    查看here 进行用户名密码验证。

    ASP.NET Web Site + Windows Forms App + WCF Service: Client Credentials //获取见解

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 2011-06-08
      • 1970-01-01
      • 2010-10-04
      相关资源
      最近更新 更多