当前位置: 首页 > 知识库问答 >
问题:

使用气氛下拉向导进行身份验证

慕烨烁
2023-03-14

您好,我正在寻找一种方法,在用户建立WebSocket连接时对其进行身份验证,如果用户未通过身份验证,则关闭连接。我使用Dropwizard框架和氛围进行WebSocket连接。下面是我使用的示例。如果我可以在连接建立时使用Dropwizard提供的“@Auth”注释进行身份验证,那就太好了。

共有1个答案

文心思
2023-03-14

你是怎么曝光的?是通过javascript前端吗?

您使用的是链接中描述的基于servlet的方法,如下所示:https://cvwjensen.wordpress.com/2014/08/02/websockets-in-dropwizard/,而不是新泽西州的气氛扩展?

如果您使用的是基于 servlet 的方法,建议使用基于令牌的方法将令牌放在 http 标头中,然后在 @Ready 处理程序方法中访问此标头,如下所示:

@Ready
public String onReady(final AtmosphereResource resource) {
    String AuthHeader = resource.getRequest().getHeader("Authorization");

    ...DO AUTH HERE

    logger.info("Resource {} connected ", resource.uuid());
    return "Connect " + resource.uuid();
}

然后,如果auth失败,您也可以很容易地关闭连接。然而,根据您的客户端实现,您可能需要考虑这一点。如果客户机在关闭时自动重新连接,您将面临一个不断关闭和打开套接字的场景,这可能会导致资源耗尽。如果auth不成功,您可以存储一个私有变量来声明这个实例是否经过了身份验证,并只删除发送给它的任何消息或处理来自它的任何消息。这也是一种让攻击者知道auth失败的“模糊”方式,它只是处于一种不确定状态;已连接,但未出现故障或关闭。只是收不到任何数据。但是同样,这是特定于您的实现的。

Jwt身份验证是一个选项,请查看此内容:https://github.com/ToastShaman/dropwizard-auth-jwt。我已经,虽然没有公开,但将此实现移植到拖放0.8rc3快照。如果你需要这个,请让我知道,我可以把它发布到github。

 类似资料:
  • 我正在尝试使用urllib3连接到网页。代码如下所示。 如果我们假设url是需要使用用户名和密码进行身份验证的某个网页,那么我是否使用正确的代码进行身份验证? 我使用urllib2做这件事很舒服,但使用urllib3做不到同样的事情。 非常感谢

  • jwt不应该仅仅用于认证用户吗?我读到过可以在里面存储非敏感的东西,比如用户ID。将权限级别之类的东西存储在令牌中可以吗?这样我可以避免数据库调用。

  • 问题内容: 我可以通过接收到请求的xml 但不是 没有JavaScript错误,没有跨域策略问题。可能是语法错误,但是我找不到合适的教程。有什么建议吗? 问题答案: 我认为您需要纯格式:

  • 我正在尝试编写一个简单的后端来访问我的Google Cloud Firestore,它位于Google Kubernetes引擎中。在我的本地计算机上,我使用以下代码对Firestore进行身份验证,详细内容见谷歌文档。 这将拉取GOOGLE_APPLICATION_CREDENTIALS环境变量,并用我的填充它,这是我通过使用角色创建服务号获得的。 所以,在本地,我的代码运行良好。我可以到达我的

  • 很抱歉,如果这个问题写得不好,我宁愿解释一下。一切都很好,突然间,每次我做时,我都会出错。我已经测试了我的ssh密钥,它似乎在工作,所以我不知道发生了什么。 以下是VSCode集成终端的情况: 然后当我尝试提交时: 如果y尝试从Linux mint终端执行相同的操作,我会得到,当我推时,我推: 我不知道如何解决这个问题。希望有人能帮帮我! PD:我尝试使用令牌进行身份验证,但我想用ssh解决这个问

  • 我的管理员控制器扩展了控制器类,在那里我使用方法加载视图页面并传递保护。config/auth.php也通过添加管理员保护和提供程序进行了修改。在app/Actions/Fortify文件夹中,我添加了AttemptToAuthenticate和ReDirectIfTwoFactorAuthenticate类,并更改了命名空间。我的管理员控制器还扩展了Guard。用户的重定向中间件和管理员的重定向