1

好的,首先让我说我真的觉得问这些问题很愚蠢,因为我认为我对事物有很好的理解,但我似乎无法理解 Kentor 授权 MVC 模型发生了什么。例如,在 Web.config 文件中,他们指定了表单身份验证,如下所示:

<authentication mode="Forms">
  <forms loginUrl="~/AuthServices/SignIn" />
</authentication> 

但我在任何地方都找不到那个终点。然后在 HomeController.cs 文件中,他们有一个这样指定的端点:

    [Authorize]
    public ActionResult Secure()
    {            
        var identity = System.Web.HttpContext.Current.User.Identity as ClaimsIdentity;
        return View(identity.Claims);
    }

但是当我通过调试器运行它时,它永远不会被击中。很抱歉提出这样的开放式问题,我知道人们在 Kentor 图书馆投入了大量时间,非常感谢。MVC 示例是否完整,或者其中一些只是您如何做事的示例,但并未真正用于示例项目中?

编辑:我找到了丢失的终点。作为 MVC 的新手,我没有意识到一个基本事实 --> 引用的 DLL 可以添加控制器端点。我认为所有的端点都必须在我的代码中。(让鞭笞开始)。

我现在意识到的是,虽然我在 VS 中被认为是一个 MVC 项目,但我实际上是一个拥有 Web API 的客户端。所以我的问题是我的项目似乎找不到授权/登录端点。我假设这意味着我必须使用 OWIN 模型,我什至不知道 OWIN 是什么,所以这应该是一种享受。

我的下一个问题是无论如何都要使用带有 Web API 的 MVC 模型?如果是这样,我如何让我的客户识别 Kentor 库中的登录端点?

编辑:所以我退后一步,使用 HTTP 模块,而不是潜入 OWIN。我知道我出轨了。一个重要的事实是,如果您使用此模块并继续以未经授权的方式恢复您的身份,请确保此部分在您的 Web.config 中:

<system.identityModel.services>
  <federationConfiguration>
    <cookieHandler requireSsl="false" name="SomeName" />
  </federationConfiguration>
</system.identityModel.services> 

我不记得说明中有很多关于此的内容,但对我来说,它允许填充我的 User.Identity 对象。现在我开始尝试找出用户ID(它仍然没有被填充,但在声明中)。希望这个线程在未来对某人有所帮助。

4

1 回答 1

1

关于您的最后一个问题“有什么方法可以将 MVC 模型与 Web API 一起使用”,简短的回答是:不。

要使 Web API 安全,您应该使用 OAuth2/OpenID Connect。因此,您需要一个可以向上游 SAML2 身份提供者进行身份验证的令牌颁发者。

如果你还在使用经典的 ASP.NET,你应该看看 IdentityServer3,它可以做到这一切。

于 2018-02-05T06:10:47.053 回答