【问题标题】:Challenge while setting up seamless authentication across MVC and Web API Layer跨 MVC 和 Web API 层设置无缝身份验证时的挑战
【发布时间】:2016-03-27 13:57:48
【问题描述】:

我在一个应用程序中工作,其中我有一个单独的 MVC 层和 Web API 层,两者都具有相同的身份验证机制,我在添加项目时选择了个人帐户身份验证选项。 Web api服务层也将被其他一些移动客户端直接访问。

但是当用户通过 MVC 登录时,他应该能够无缝访问 Web Api,但我不想真正将用户名和密码从 MVC 传递到 Web Api 层,我被告知这是一个不好的做法.但我需要对我的用户进行身份验证和授权,所以我想到的唯一选择是在 Web API 级别有一个默认帐户来颁发令牌,这将在 MVC 后进行身份验证并返回一个令牌,即写入客户端中的 cookie。现在来自 UI 的 Ajax 调用可以使用此不记名令牌并完成工作。

我在这里遇到的唯一问题是,因为我使用的是默认帐户,所以我再次需要用户详细信息才能在服务级别进行授权,尽管我在我的 UI 级别进行授权,但用户可以欺骗系统。我在这里迷路了,想出了一个解决方案,例如,当用户登录到 MVC 时,还会发送用户详细信息以及获取 WebAPI 令牌并向用户发出另一个令牌的调用,以便用户使用这两个令牌从 MVC 调用 web api。

我不确定这是否有效,或者它是否是最好的方法。我只是想检查一下,我应该如何从这里出发。对此的任何帮助都会非常棒。

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-4 authentication asp.net-web-api


    【解决方案1】:

    这是一个非常好的集成示例 - 我知道他们使用 Angular 作为客户端,但您可以从中学习:

    http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/

    查看此部分以了解它们如何将 API 与前端分离(同一篇文章的一部分)。 http://bitoftech.net/2014/09/24/decouple-owin-authorization-server-resource-server-oauth-2-0-web-api/

    【讨论】:

    • 感谢@MichaelLake 的输入。我终于关注了wesleycabus.be/2014/06/… 能够成功地使用基于 cookie 的解决方案进行身份验证。但是,当我尝试将其扩展到具有单点登录功能的多个 Web api 服务时,它并没有成功。在另一个问题中发布了相同的内容。
    • 您需要将 web.config 中的 MachineKey 设置为对每个服务器都相同 - 它会影响 cookie 的序列化/反序列化方式。 stackoverflow.com/questions/3855666/…
    • 机器密钥是一模一样的,我也对比了beyond compare的文件,除了参考包的最新版本外,其他的都一样。我现在有点怀疑......
    猜你喜欢
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 2015-03-30
    • 2012-10-14
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多