好的,首先让我说我真的觉得愚蠢地问这些问题,因为我认为我对事情有了很好的理解,但我似乎无法掌握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);
}
但是当我通过调试器运行它时,它永远不会被击中。我很抱歉提出这些开放性的问题,我知道人们已经花了很多时间进入肯特图书馆,我们非常感谢。 MVC示例是完整的还是其中一些只是示例,说明如何执行操作但实际上并未在示例项目中使用?
编辑:我想出了缺失的终点。作为MVC的新手,我没有意识到一个基本事实 - &gt;引用的DLL可以添加控制器端点。我认为所有的终点都必须在我的代码中。 (让鞭打开始)。
我现在意识到,虽然我被认为是VS中的MVC项目但我真的是一个使用Web API的客户端。所以我的问题是我的项目似乎无法找到授权/登录终点。我假设这意味着我必须使用OWIN模型,我不知道OWIN甚至是什么,所以这应该是一种享受。
我的下一个问题是,无论如何将MVC模型与Web API一起使用?如果是这样,我如何让我的客户端识别Kentor库中的登录终端?
编辑:所以我退后一步,使用HTTP模块而不是潜入OWIN。我知道我好意思。一个重要的事实是,如果您使用此模块并继续将您的身份恢复为未经授权,请确保此部分位于您的Web.config中:
<system.identityModel.services>
<federationConfiguration>
<cookieHandler requireSsl="false" name="SomeName" />
</federationConfiguration>
</system.identityModel.services>
我不记得在说明书中有很多关于此的内容,但对我来说,它允许我的User.Identity对象被填充。现在,我正在试图获取用户ID(仍然没有填充但在索赔中)。希望这个帖子可以帮助将来的某个人。
答案 0 :(得分:1)
重新提出你的最后一个问题&#34;有没有办法将MVC模型与Web API一起使用&#34;简短的回答是:没有。
要使Web API安全,您应该使用OAuth2 / OpenID Connect。因此,您需要的是可以向上游SAML2身份提供商进行身份验证的令牌颁发者。
如果你还在经典ASP.NET中,你应该看看IdentityServer3,它可以完成所有这些。