【发布时间】:2012-08-29 07:31:12
【问题描述】:
我正在设计(是的,仍然是设计)一个架构,我们有一个主要的服务来做一些事情。验证用户、导入数据和获取结果等。我们还有一个 ASP MVC3 UI 模块与之交互。这里的关键是,将来它可能是 SharePoint 或只是使用该服务的批量导入器应用程序,因此必须注意,但现在它是 ASP MVC3。
我正在努力决定/了解的是身份验证。我更喜欢 MembershipProvider,而不是喜欢 SqlProvider。我们是一家 M$ 房子,所以我很高兴沿着这条路走下去。我想要做的是将登录到 UI 的用户的身份验证与实际服务调用的身份验证联系起来。大致有两种类型的用户“普通”和“管理员”,我无法确定最优雅的身份验证方式。
我真的很喜欢我所拥有的。 WCF 服务提供的 SqlProvider 以及对服务调用的访问也都与它相关联(我需要整理一下,因为目前所有服务调用都被配置锁定,而不是按服务合同锁定)。
这样做的问题是您必须通过明文传递用户名和密码,并防止您进入证书世界 - 我在这里的研究表明开发证书是坏的,真正的证书很昂贵,所以如果是真的,两者都不是一个选项。
问题是:最好的方法是什么?我想 一项服务 i) 在每次通话时进行身份验证,因此您不能调用您不允许的东西 - 尽可能优雅地处理 ii) 是无状态的,所以我可以扩展/集群服务。 iii) 不受客户端控制,因此可以替换。
证书的替代方案我想到了对服务的登录调用,它返回某种令牌,随后与其他调用一起传递并使用自定义主体提供程序进行身份验证。这样做的优点是我可以在 UI 和服务之间使用 Windows 加密,并为角色传递身份验证。我想避免做的是在每个调用的参数中传递 u/n 细节,因为这看起来很难看。
请帮忙!
【问题讨论】:
标签: c# .net asp.net-mvc-3 wcf asp.net-membership