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