【发布时间】:2013-07-23 16:25:59
【问题描述】:
关于如何使用 MVC asp.net 进行身份验证/授权,我有几个问题。
我有一堆 WCF 服务,通过在每个请求上传递用户名和密码来验证/授权用户(我使用 HttpModule 进行验证,并在 WCF 中捕获 Authenticating 事件)。它使用该 HttpModule 中的 aspnet 成员身份来验证用户,并设置 Principal 以便我可以在我的服务上拥有角色(这些服务共享给我们的各种客户,所以我需要保持它的工作方式)。
现在我想创建一个能够调用这些服务的 MVC 项目,但我不想在会话中保存用户名和密码并将其传递给每个请求。
如果有人可以帮助我,我有一个场景有一些空白!
我打开了 WCF 在 WCF 服务层上提供的 AuthenticationService。
在我的 MVC 项目中,我添加表单身份验证,并使用 authorize 属性装饰我的方法,如果我没有被授权,它将重定向到登录页面。
在登录页面中,当用户提供他/她的用户名和密码时,我调用 WCF AuthenticationService 来登录我的用户。然后我从中检索身份验证令牌并将其存储在我的会话中。
下次我想在我的服务层调用 WCF 服务时,我检索此令牌并将其添加到我的请求的标头中。
在服务端验证我的用户的 HttpModule 上,我检查它是否是一个有效的令牌或它是否是一个有效的用户名或密码(以方便其他人调用这些 Web 服务) .
如果是,则接受请求并返回正确的数据..
这似乎是处理这个问题的正确方法吗??
非常感谢任何帮助.. :/ 提前致谢! 尼尔
【问题讨论】:
-
这真的很奇怪。将用户名/密码传递给每个请求很麻烦,并且您失去了灵活性。您是否正在尝试通过您的方法来满足任何重要要求,或者您只是不知道如何以其他方式做到这一点?
-
我们提供的一些服务适用于基于 SAP 的系统,我认为这些系统无法处理基于令牌的身份验证。这就是我选择这个的原因。不过,我不认为这是一个坏主意吗?所有基于 REST 的服务都不是无状态的吗?
-
如果这是一个糟糕的解决方案,您能提供另一种解决方案吗?如果没有太多 WCF 知识,这是相当困难的..
标签: c# asp.net-mvc wcf authentication asp.net-membership