【问题标题】:Implement authentication with token bearer and not cookie使用令牌持有者而不是 cookie 实现身份验证
【发布时间】:2018-08-13 00:48:27
【问题描述】:

如何在 ASP.Net MVC Core 中为所有页面实现没有 cookie 和仅承载令牌的身份验证(和授权)?

我们还能使用 ASP.Net Identity 吗?

【问题讨论】:

    标签: authentication asp.net-core asp.net-identity bearer-token


    【解决方案1】:

    不,您不能将不记名令牌与 MVC 视图一起使用。仅适用于 WebAPI 式调用(由 JavaScript/Ajax 调用调用),因为对于承载令牌,您需要在 HTTP 请求中传递包含承载令牌的标头。

    ASP.NET Core MVC 和 ASP.NET Core Identity 都没有提供生成 JWT 或不透明/刷新令牌的机制。您需要一个第三方库(ASOSOpenIddictIdentityServer4 - 或编写您自己的中间件)。

    一般方法是使用 Cookie 进行 MVC(+AntiForgery 令牌 - 这些对于防止跨站点伪造请求 (XSRF) 攻击很重要)和 WebAPI 承载(存在使用 Cookie 运行 Ajax/Rest 调用的安全问题,因为您可以'然后像使用 AntiForgery 令牌做 MVC 一样不容易保护)。有疑问,谷歌关于条款;)

    这对你有意义吗?

    【讨论】:

      【解决方案2】:
      1. 您可以将 JWT 存储在无 cookie 会话中 - 请参阅 Asp.net mvc 4 - Need to use sessions but can't use cookies

      这有点违背了拥有 JWT 的目的。

      1. 您可以确保 JWT 是每个链接中的 URL 参数,然后覆盖 Application_AuthenticateRequest 以在 URL 中找到它并手动将身份分配给上下文。见答案How to use JWT in MVC application for authentication and authorization?

      拥有包含大量 JWT 令牌数据的多个链接会加起来。此外,如果链接链中缺少一个,则 JWT 将被“丢弃”。可以将 JWT 保存在客户端 sessionStore 中,并在点击链接时让 javascript 动态地将 JWT 添加到链接中。

      【讨论】:

        猜你喜欢
        • 2015-06-04
        • 1970-01-01
        • 2023-04-02
        • 2013-12-24
        • 2017-07-10
        • 2013-10-18
        • 2011-05-02
        • 2014-10-09
        • 2017-12-10
        相关资源
        最近更新 更多