- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个使用无服务器框架构建后端的项目。最近,我使用 API Gateway 的 websockets 添加了一个功能。但是,我对我的特定实现的安全性存有疑问,并想询问它们的有效性。
我努力将身份验证构建到我的 websocket 路由中。有一个授权器功能,但不幸的是,原生 Javascript API 无法提供编辑 Websocket 消息中的 header 的方法——这意味着我必须在 url 参数中提交授权 token ,我不想这样做。
我想出了一个解决方法。我在 API 网关上设置了现有的无服务器 HTTP 微服务,并通过 AWS Cognito Identity Federation 进行了身份验证。我的解决方案是将我的 websocket 身份验证“搭载”到我的 HTTP 服务上,如下所示。
我在 Heroku 上找到了这个关于 websocket safety 的资源,它推荐了一个类似但不完全相同的过程:https://devcenter.heroku.com/articles/websocket-security
建议如下:
"So, one pattern we’ve seen that seems to solve the WebSocket authentication problem well is a “ticket”-based authentication system. Broadly speaking, it works like this:
When the client-side code decides to open a WebSocket, it contacts the HTTP server to obtain an authorization “ticket”.
The server generates this ticket. It typically contains some sort of user/account ID, the IP of the client requesting the ticket, a timestamp, and any other sort of internal record
keeping you might need.The server stores this ticket (i.e. in a database or cache), and also returns it to the client.
The client opens the WebSocket connection, and sends along this “ticket” as part of an initial handshake.
The server can then compare this ticket, check source IPs, verify that the ticket hasn’t been re-used and hasn’t expired, and do any other sort of permission checking. If all goes well, the WebSocket connection is now verified."
据我所知,我的方法是 heroku 的相似之处在于它们都使用 HTTP 方法进行身份验证,但不同之处在于
1) Heroku 的方法在打开时检查身份验证,而我的方法随后检查2) Heroku的方法需要生成和存储安全 token
我不想通过 websocket 发送授权,因为我必须将它存储在 url 参数中,而且我也不想生成和存储 token ,所以我采用了我的方法。
但是,我对我的方法也有一些疑问。
1) 因为我不检查打开 websocket 的授权,理论上这种方法容易受到 dDos 攻击,攻击者只需打开尽可能多的套接字。我在这里的假设是责任落在 API Gateway 身上,用它的漏桶算法来防止。
2) 我的策略取决于 connectionId 的安全性。如果攻击者能够欺骗此 connectionId,那么我的策略将不再有效。我假设此 connectionId 是在 API 网关内部发布的,用于标记特定连接,因此不应受到攻击。但是,我想仔细检查一下是否是这种情况。
最佳答案
我建议研究一下 JWT。它是为此目的而创建的,您需要有一些方法来验证客户端请求而不暴露凭据。它是完全独立的,允许您在每次发出请求以验证发出请求的用户时不向数据库发出请求:https://jwt.io/
JWT 很容易在无服务器中实现并附加到网络套接字连接请求。然后,您可以执行一些操作,例如将用户 IP 地址添加到 JWT 的负载中,并在请求时对其进行验证,以确保用户 100% 得到验证。
关于amazon-web-services - 我可以依靠 ConnectionId 来确保 API 网关 Websocket 的安全性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61737655/
如果我有多个集线器,并将一个 JavaScript 客户端连接到所有集线器,它们之间的上下文 ConnectionID 是否相同? 最佳答案 有趣的问题。我不知道答案,所以我用 this exampl
我有一个 asp.net 经典网站。我已经获得了 SignalR 的基本功能(其中一个客户端向其余客户端发送消息)。但现在我只想将消息发送到特定的 connectionsID。 我的中心: **
我正在开发一款使用 signalr 的聊天应用。我通过他们的 connectionid 关联每个用户。 我只是想知道如果我广播所有用户的 connectionids 以便任何人都可以在代码中看到它们,
我的应用程序是一个使用 SignalR 的 WebApi 项目,类似于这个 http://blog.johnbrunnings.com/tag/signalr/ .我需要在 Controller 中获
我正在玩弄 SignalR 并在徘徊 SignalR 如何创建 connectionID 这是基于我的 IP 地址、我连接的设备还是其他?并且是否可以手动设置此 ID。假设我有一个包含用户的数据库,我
我有一个 SignalR 项目,该项目在我的开发环境中正常运行,但是一旦将其转移到生产环境中,几乎每个调用都会因错误而失败 The ConnectionId is in the incorrect f
我想知道信号器是否更改 OnReconnected 方法上的 ConnectionId?因为我将用户列表映射到他们的连接 ID,所以如果由于连接速度慢而在服务器上引发重新连接事件,例如,connect
我正在使用 yi 1.1 应用程序开发指南,并且正在尝试实现 RBAC(基于角色的访问控制)。我得到的错误是 CDbAuthManager 未定义,这很奇怪,因为我测试了数据库连接并且它有效,并且我在
出于各种原因,在建立 SignalR 连接时,我将该 ConnectionId 存储在我的数据存储中。但是,这些连接记录可能会变得孤立,例如,如果 SignalR 重新启动。 (我还观察到让我怀疑 O
如何在集线器之外获取客户端 connectionId/clientId?.. 我已设法执行以下操作: var context = GlobalHost.ConnectionManager.GetHub
我开发 WPF Prism 6 MVVM 多模块应用程序。直到今天一切正常。但是今天早上我决定清理并重建我的应用程序。在清理和重建后,我的应用程序运行时出现以下错误: PresentationFram
我有以下星座: 我正在使用一个 asp.net 核心 web api 项目,其中还包括一个 HubContext。用户必须做的第一件事是对我的 UsersController : BaseContro
我希望能够使用 SignalR 向特定用户帐户发送消息。 现在我可以发送给大家了! 我正在寻找任何方式来访问集线器外部 Controller 中的 context.ConnectionID。我尝试在
我正在 $connect 路由上设置一个带有自定义授权方的 AWS API Gateway Websockets,如下所述: https://docs.aws.amazon.com/apigatewa
我正在尝试将我的 iOS 应用程序与我们在本地网络上的开发服务器上设置的 MVC3(框架 4)SignalR 程序集成。为此创建的网站在我们的网络中运行良好。 但是,当尝试使用 SignalR iOS
当我向信号器发出请求时,我从 JavaScript 发送用户 ID,如下所示: var userId = "1"; var connection = $.hubConnection("/si
当我这样做时: Connection = new HubConnection(uri); Connection.ConnectionId = "89668c32-c654-40a2-96c3-21a8
I am using SingalR for my Chat Application. Wanted to play with Redis and SignalR but I cannot find
我正在开发一个使用无服务器框架构建后端的项目。最近,我使用 API Gateway 的 websockets 添加了一个功能。但是,我对我的特定实现的安全性存有疑问,并想询问它们的有效性。 我努力将身
嗨,我正在使用 Angular 应用程序连接到信号器,我正在使用“@aspnet/signalr”:“1.0.0-preview1-final”。 我需要将 connectionId 发送到我的 Co
我是一名优秀的程序员,十分优秀!