【问题标题】:Mixed authentication for OWINOWIN 的混合身份验证
【发布时间】:2014-01-28 12:48:07
【问题描述】:

我有两个通过两种方式进行身份验证的用户:

  1. 如果他们是内部用户,我们将通过 Windows 的活动目录进行身份验证
  2. 如果他们在网站上注册,他们会通过表单身份验证进行身份验证

在 MVC 3/4 中,我能够通过实现自定义成员资格提供程序和自定义角色提供程序来实现这一点。

在 MVC 5 中使用 OWIN 和 Identity 是否可以实现相同的操作?如何实现?

【问题讨论】:

    标签: c# asp.net-mvc-5 owin


    【解决方案1】:

    本质上,混合模式是一种带有 windows 身份验证入口点的表单身份验证,一旦用户通过它,就会进行正常的表单身份验证流程。

    Enabling Windows Authentication in Katana

    Katana 目前不提供用于 Windows 身份验证的 OWIN 中间件,因为该功能已在服务器中可用

    因此,要使 Windows 身份验证正常工作,我必须依赖提供的主机之一,IISSelf-host (System.Net.HttpListener )

    我制作了一个解决方案,使它看起来像一个外部提供商,将 windows 身份映射为外部登录。

    源码:https://github.com/MohammadYounes/MVC5-MixedAuth

    【讨论】:

    • 假设我希望两种身份验证表单使用相同的登录屏幕。是否可以修改您的解决方案以将它们组合成一个动作。作为一个相关问题,Identity 可以为外部用户使用数据库优先完成吗?
    • @Shoe 我没明白你的意思!该解决方案已经为两者(win+forms)提供了one login screen。但是,如果您的意思是将两者结合到一个控制器动作中?那么是的,它可以完成,但出于编码原因,我更喜欢将它们分开。至于你的最后一个问题,你只需要实现你自己的UserManager<ApplicationUser>UserStore<ApplicationUser>
    • 我明白。在 DB-first 中,User 类如何像 ApplicationUser 那样从 IdentityUser 继承?
    • @Shoe 这是一个实现问题,IdentityUser 只是一个基类,与 DB 表有明确的映射关系。对于 DB-first 实现,您只需实现 UserStore,它有很长的接口列表,但您可以从查看 Microsoft.AspNet.Identity.EntityFramework.dll 中的 EF 实现开始。
    • 你能帮我解决这个问题吗:stackoverflow.com/questions/39275597/…
    猜你喜欢
    • 2015-07-18
    • 2019-09-08
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 2020-06-21
    相关资源
    最近更新 更多