好吧,首先让我说,我真的觉得问这些问题很愚蠢,因为我认为我对事情有很好的理解,但我就是不能理解Kentor Authorization 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是什么,所以这应该是一种享受。
我的下一个问题是,有没有办法将MVC模型与Web API结合使用?如果是这样,我如何让我的客户端识别Kentor库中的登录端点?
编辑:所以我后退一步,使用HTTP模块,而不是深入研究OWIN。我知道我被吓坏了。一个重要的事实是,如果您使用此模块,并且不断以未经授权的身份返回您的身份,请确保此部分位于您的Web.config中:
<system.identityModel.services>
<federationConfiguration>
<cookieHandler requireSsl="false" name="SomeName" />
</federationConfiguration>
</system.identityModel.services> 我不记得在说明中有很多关于这方面的内容,但对我来说,它允许填充我的User.Identity对象。现在,我正在尝试弄清楚userID (它仍然没有被填充,但在声明中)。希望这个帖子能在未来帮助一些人。
发布于 2018-02-05 14:10:47
你的最后一个问题“有没有办法在Web API中使用MVC模型?”简短的回答是:没有。
为了保证Web API的安全,您应该使用OAuth2/OpenID Connect。因此,您需要一个令牌颁发者,它可以向上游SAML2身份提供者进行身份验证。
如果你还在使用经典的ASP.NET,你应该看看IdentityServer3,它可以做所有这些事情。
https://stackoverflow.com/questions/48169874
复制相似问题