我有一个编写为 ASP MVC 应用程序的 Web 服务,它基本上使用滚动 cookie 作为其身份验证机制。所以有人通过 https 将他们的用户名和密码发送到服务,然后验证他们并向他们发出一个包含令牌、用户标识符和时间戳的 cookie,如 HTTPONLY 和 SECURE。然后,每当用户需要访问需要身份验证的页面时,cookie 就会被发送过来,并使用时间戳和针对用户的令牌进行验证,假设通过了它,然后发出一个新的时间戳并将其发送回用户。
这种方法迄今为止有效,尽管仍然存在 CSRF(通过滚动时间戳减少)和其他一些漏洞的可能性,但这是当前项目团队愿意承受的风险,但仍有一大笔技术债务需要调查更好的方法,但那是另一个讨论,因为我们的主要目标是无状态服务,因此它可以轻松扩展。
无论如何,一方面,现在的问题是我们被要求从服务中向其他 3rd 方公开数据。然而,他们不会像使用浏览器的普通用户那样使用这些数据,而是作为任何平台上的某种应用程序。所以现在我想知道是否有更好的方法让基于应用程序的消费者对自己进行身份验证,因为目前他们需要发送一个 http 请求进行身份验证,然后获取返回的 cookie,并将其发送给受限请求。然而,其他第 3 方需要在他们想要从我们的系统获取数据时不断处理这个 cookie,这对他们来说似乎有点痛苦。
那么有没有另一种我看不到的方法来做到这一点?因为我可以看到保持它无状态的两种方法是每次在查询字符串上发送一些令牌,这再次要求他们进行身份验证和存储它,并且会使查询字符串不那么干净。然后另一种方式是我们目前使用 cookie 作为状态机制。