【问题标题】:Implementing a token style security when doing GET requests在执行 GET 请求时实现令牌样式安全性
【发布时间】:2016-05-28 14:41:42
【问题描述】:

我正在为应用程序实现一个临时且非常简单的令牌式身份验证机制。

这个想法很简单。每当用户登录应用程序时,都会向客户端返回一个令牌,该令牌将其存储在浏览器的sessionStorage 数据结构中。

现在,每当我通过 AJAX 发出请求时,我都可以将令牌与请求一起发送,服务器可以验证此令牌是否与身份验证或用户名相关联。如果是,则正常解析请求,如果不是,则返回或显示错误页面或初始页面。

我不确定这是否是在真实或严肃的应用程序中实现令牌式身份验证和授权的方式,但我现在不知道如何通过单击链接在执行 GET 请求时发送令牌的一种看法。

我唯一的想法是拦截获取请求,以便我可以用令牌填充它们,但这一切似乎很奇怪,而且我已经有很多链接和视图。

【问题讨论】:

  • 尝试使用cookies而不是sessionStorage
  • @Sam 你知道任何可以引导我走向正确方向的示例或教程吗?
  • 我没用过Spring,但我google了一下发现kscodes.com/spring-mvc/spring-mvc-cookie-handling
  • @Sam 好的,在示例中,cookie 是简单设置的。此 cookie 将在每次请求时发送到服务器。但是如果我想允许同一个用户从多个设备连接呢?
  • 您必须在每台设备上设置 cookie。这很正常。当您使用新设备访问网站时,您必须再次输入您的用户名和密码,以便网站可以在新设备上设置 cookie。

标签: java ajax spring security token


【解决方案1】:

搜索 Json Web Tokens 和 java 上的实现。这正是您所需要的。

如果您想在 jwt 中向用户发送一些敏感数据,请使用 Json Web 加密。

您可以在每个请求标头上或作为请求参数发送该令牌

【讨论】:

  • 你能告诉我一个使用JS和Spring使用JWT的具体例子吗?
  • 在 jwt.io 站点中提供了几个 java 实现。其中之一是 jose 4j:bitbucket.org/b_c/jose4j/wiki/Home.
  • 这里有很多例子说明如何做到这一点,而不管春天如何。只需编写您自己的 Component 类,将其包装在 spring 中。在 js 中,只需添加一个特殊的请求参数——称之为 jwe。或者添加到请求头
  • 如果还是不明白,请贴一些代码。但是你真的应该进行自己的搜索,以确保选择最好的方法和实施。
【解决方案2】:

您可以设置 cookie,确保将其设置为 httponly(如果您在 https 站点上,则为安全)并在到达服务器的每个请求上读取 cookie。

【讨论】:

  • 任何具体的例子可能使用 Java、Spring 和 Javascript?
  • 为了安全起见,您还应该考虑采用 JWT (Json Web Token)
  • 每个请求都会发送 cookie...例如,如果我允许用​​户多次连接,并且 cookie 的键是用户名,那么这将不起作用,因为在每次登录时,与某个用户名关联的值都会被覆盖。如果 cookie 的密钥是生成的随机令牌,那么我无法区分服务器端同一用户的不同登录...您将如何解决这个问题?
  • 在 jwt 中,您可以在令牌中设置自定义属性。无需保存用户 - 令牌映射服务器端。
【解决方案3】:

您可以使用 JWT 令牌(请参阅 https://jwt.io/introduction/)。 JWT 基本上是一个 JSON 数据结构。通常,令牌在授权 http 标头中传递。

【讨论】:

  • 好的,有什么具体的例子吗?
猜你喜欢
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
  • 2013-02-24
  • 2018-09-02
  • 1970-01-01
相关资源
最近更新 更多