将基于声明的授权添加到 MVC 3
我有一个 MVC 应用程序,我想向其中添加基于声明的授权。在不久的将来,我们将使用 ADFS2 进行联合身份验证,但现在我们将在本地使用表单身份验证。
有没有人看过有关在没有外部身份提供商的情况下使用 WIF 的最佳方法的教程或博客文章?
我已经看到以下内容,但现在已经一年了,我认为应该有一个更简单的解决方案:
http://geekswithblogs.net/shahed/archive/2010/02/05/137795.aspx
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以在没有 STS 的 MVC 中使用 WIF。
我使用了默认的 MVC2 模板,但它也应该适用于 MVC 3。
您需要:
1- 插入 WIF 的 SessionAuthenticationModule (web.config)
2- 无论您在何处验证用户身份,创建一个ClaimsPrincipal,添加所有必需的声明,然后创建SessionSecurityToken。这是 MVC 创建的 AccountController 中的 LogOn 操作:
我刚刚添加了所需的行并保留了其他所有内容相同。因此可能需要进行一些重构。
从那时起,您的应用将收到一个ClaimsPrincipal。全部由 WIF 自动处理。
CookieHandler.RequiresSsl = false 只是因为它是开发计算机并且我没有在 IIS 上部署。它也可以在配置中定义。
You can use WIF in MVC without an STS.
I used the default MVC2 template, but it should work with MVC 3 too.
You need to:
1- Plug WIF 's SessionAuthenticationModule (web.config)
2- Wherever you authenticate your users, create a ClaimsPrincipal, add all required claims and then create a SessionSecurityToken. This is the LogOn Action in the AccountController created by MVC:
I just added the required lines and left everything else the same. So some refactoring might be required.
From there on, your app will now receive a ClaimsPrincipal. All automatically handled by WIF.
The CookieHandler.RequiresSsl = false is only because it's a dev machine and I'm not deploying on IIS. It can be defined in configuration too.
WIF 设计为使用 STS,因此如果您不想这样做,那么您基本上必须按照本文重新发明轮子。
当您迁移到 ADFS 时,您几乎必须重新编码所有内容。
或者,看看 StarterSTS,它实现了您需要的相同类型的 aspnetdb 身份验证,但允许 WIF 执行繁重的工作。然后,当您迁移到 ADFS 时,您只需针对 ADFS 运行 FedUtil,无需进行任何重大编码更改即可正常运行。
(顺便说一句,有一个 MVC 版本 - 稍后的实现 - 此处)。
WIF is designed to use a STS so if you don't want to do that, then you essentially have to re-invent the wheel as per the article.
When you move to ADFS, you will pretty much have to re-code everything.
Alternatively, have a look at StarterSTS, This implements the same kind of aspnetdb authentication that you need but allows WIF to do the heavy lifting. Then when you migrate to ADFS, you simply have to run FedUtil against ADFS and it will all work without any major coding changes.
(BTW, there is a MVC version - a later implementation - here).