【问题标题】:Would Cookies ever be used for Web APIs and would Bearer tokens ever be used for web applications?Cookie 是否会用于 Web API,Bearer 令牌是否会用于 Web 应用程序?
【发布时间】:2019-12-05 16:13:33
【问题描述】:

我正在尝试了解 Cookie 之间的区别; Bearer 和 JWT 专门在 .NET Core 上下文中。我花了几天的时间阅读这个。

我的研究告诉我,Cookies 和 Bearer 是替代的身份验证机制,它们都表示为 JWT。

.NET Core Web 应用程序应该使用 Cookies 而 .NET Core Web APIs 应该使用 Bearer 是否公平?我问的原因是因为我为 Bearer 查看的每个示例(在 .NET Core 上下文中)都使用 Web API,而我为 Cookies (在 .NET Core 上下文中)查看的每个示例都使用 Web 应用程序。我可以理解这一点,因为我的研究告诉我 cookie 最适合网络应用程序(使用浏览器 - 最适合 cookie),但是网络 API 可以被非浏览器应用程序使用(因此 Bearer 更适合)。

我是否理解正确?

我今天看了很多其他类似的问题,例如。这个:JWT vs cookies for token-based authentication。但是,没有人回答我的具体问题 - Cookie 是否会用于 Web API,Bearer 令牌是否会用于 Web 应用程序?

【问题讨论】:

  • 我将 JWT 令牌存储在 cookie 中(也可以是本地存储),当我向具有授权属性的控制器发出请求时,我会创建一个带有“授权”标头的请求令牌的价值。关于您的问题,但是您可以使用 cookie 保护 Api 应用程序:blinkingcaret.com/2018/07/18/…
  • @Daniaal,谢谢。您可以使用承载来保护 Web 应用程序(不是 api)吗?这是我的更多问题。
  • 据我所知,这将是 cookie。通常,JWT 等不记名令牌与 Web Api 身份验证相关联。

标签: json authentication asp.net-core cookies jwt


【解决方案1】:

不记名令牌是一种访问令牌。不记名令牌的概念由 oAuth 推广:

拥有不记名令牌(“不记名”)的任何一方都可以使用它来 获得对相关资源的访问权(无需演示 拥有一个加密密钥)。

翻译:你不需要证明你的身份来访问资源,不记名令牌就足以让你进入。

JWT 是一种用编码、内容等规则来表示声明的格式;它可以用作不记名令牌。 cookie 是 HTTP 中管理状态的一种方式。 cookie 可以包含 JWT 或更通用的不记名令牌,也可以不包含上述任何内容。

是否可以使用 cookie 来授权访问 REST API? (.NET Core Web API 是 REST API)。答案是肯定的——这在技术上是可行的。这是一个old but still decent discussion on the subject(+一个更多recent and specific问答)。

是否可以使用不记名令牌来授权对 Web 应用程序的访问,大概是在人类挥舞用户代理的交互场景中?再次回答是 - 这是可能的。如果 Web 应用程序旨在这样做,那么如果您将不记名令牌发送到授权标头中,它就可以提供受保护的资源。不涉及 cookie。 blog 的前半部分很好地讨论了 web 应用中基于会话(cookie)与基于令牌(无状态)的身份验证选项。

【讨论】:

  • 您能否澄清一下“人类产生用户代理”和“交互式场景”的含义。
  • 用户在他们的桌面上启动一个网络浏览器,导航到blah.my.webapp.com,输入他们的凭据并登录。这是“一个在交互场景中使用用户代理的人”。
  • 好的,但任何网站都是这样运作的?不记名令牌也将存储在哪里?我看到它的方式是 cookie 必须用于网络应用程序端,但我可能会遗漏一些东西?
  • cookies 通常被 webapps 用于会话管理,是的。您询问的是不记名令牌而不是 cookie。请参阅链接的博客了解它是如何工作的。
猜你喜欢
  • 1970-01-01
  • 2019-12-25
  • 2017-12-11
  • 2018-12-15
  • 2011-07-16
  • 2020-12-13
  • 2022-12-19
  • 2013-11-17
  • 2018-01-31
相关资源
最近更新 更多