使用 WCF 身份验证服务的 C# MVC 身份验证.. 几个问题

标签 c# asp.net-mvc wcf authentication asp.net-membership

我有几个关于如何使用 MVC asp.net 进行身份验证/授权的问题。

我有一堆 WCF 服务,通过在每个请求上传递用户名和密码来验证/授权用户(我使用 HttpModule 进行验证,并在 WCF 中捕获 Authenticating 事件)。它使用该 HttpModule 中的 aspnet 成员资格来验证用户并设置主体,以便我可以在我的服务中发挥作用(这些服务共享给我们的各种客户,因此我需要保持其工作方式)。

现在我想创建一个能够调用这些服务的 MVC 项目,但我不想在 session 中保存用户名和密码并将其传递给每个请求。

如果有人可以帮助我,我有一个有一些差距的场景!

  1. 我打开 WCF 在 WCF 服务层上提供的 AuthenticationService。

  2. 在我的 MVC 项目中,我添加了表单例份验证,并使用 authorize 属性装饰我的方法,如果我未获得授权,这会将我重定向到登录页面。

  3. 在登录页面中,当用户提供他/她的用户名和密码时,我调用 WCF AuthenticationService 来登录我的用户。然后我从中检索身份验证 token 并将其存储在我的 session 中。

  4. 下次我想在我的服务层上调用 WCF 服务时,我会检索此 token 并将其添加到我的请求 header 中。

  5. 在服务端验证我的用户的 HttpModule 上,我检查它是否是一个有效的 token 它是否是一个有效的用户名或密码(以方便其他人调用这些网络服务) .

  6. 如果是,它接受请求并返回正确的数据。

这看起来是解决这个问题的正确方法吗??

非常感谢任何帮助.. :/ 提前致谢! 尼尔

最佳答案

建议的解决方案听起来不错。在听起来很糟糕的每个请求中传递用户名/密码的想法。对此的唯一修改是不通过登录页面获取 token ,而是从未 protected WCF 方法之一获取 token 。

客户端流程将是:

  1. 调用unguarded方法,传递用户名和密码作为参数,获取token
  2. 使用 token 调用其他方法进行身份验证

如果您的客户端支持 http cookie,您甚至可以完全依赖表单例份验证 - 将表单 cookie 附加到登录请求并将 cookie 与其他请求一起传递。这样您甚至不需要额外的模块。

关于使用 WCF 身份验证服务的 C# MVC 身份验证.. 几个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17815774/

相关文章:

c# - Expression.PropertyOrField 可以用于访问静态属性或字段吗?

c# - 为什么我会收到此错误?

asp.net-mvc - 如何测试 ASP.Net MVC View ?

c# - 读取 PDF 文件并作为流从 WCF 服务返回?

c# - 类常量JAVA到C#的实现

c# - Asp.net razor View - lambda 表达式输入

asp.net-mvc - 如何在 ASP.NET MVC 中动态调整图像大小?

c# - 从 MVC4 中的 Authorize 属性捕获异常

.net - 如何判断 WCF 服务是否托管在控制台应用程序中?

c# - 从 Azure ServiceConfig 调用 WCF 服务