如何隐藏 Akka 远程 Actor 来查找?

2024-04-26

我正在运行 Akka 2.0.2 微内核,并希望为不受信任的远程参与者实现身份验证方案。

首先想到的是设置一个身份验证参与者,当身份验证成功时,该参与者会返回对工作参与者的引用。

但是,我应该如何保护工作参与者不被简单地通过 actorFor() 直接远程查找,从而完全绕过身份验证?

也就是说,我想防止远程参与者在未经身份验证的情况下访问我的微内核参与者系统中的参与者。

在 actorOf() 中不给工作 actor 命名是不够的,因为它将获得一个容易猜到的自动生成的名称。有没有办法禁用演员的远程查找,但仍然能够将他们的 ActorRef 发送给远程系统?


我认为您与身份验证演员的合作是正确的。让身份验证参与者返回 ActorRef 和令牌。远程参与者必须在发送给本地工作参与者的消息中包含该令牌。工作参与者将在执行工作之前验证令牌。

trait AuthenticatingActor { this => Actor
  val authenticationService = //...

  def receive = {
    case UnauthenticatedRequest(token, msg) =>
      if (authenticationService.validate(token) 
        authenticatedRecieve(msg)
      else
        sender ! RequestNotAuthenticated(token, "token invalid")

  def authenticatedReceive: Receive
}

class Worker extends AuthenticatingActor with Actor {
  def authenticatedReceive: Receive = //..
}

class AuthenticationActor extends Actor {
  val authenticationService = //..
  var worker: ActorRef = _

  def receive = {
    case Authenticate(username, password) =>
      val token = authenticationService.authenticate(username, password)
      sender ! token.map(AuthenticationSuccess(_, worker).
                     getOrElse(AuthenticationFailure)
    //..
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何隐藏 Akka 远程 Actor 来查找? 的相关文章

随机推荐

  • 如何在 Swift 中处理 NSUserDefaults 中的非可选值

    从中获取值NSUserDefaults我会做这样的事情 let userDefaults NSUserDefaults standardUserDefaults if let value userDefaults objectForKey
  • 如何将值从对象转换为 Nullable<> [重复]

    这个问题在这里已经有答案了 我有一些带有一些属性的类 我想将值从字符串转换为该属性的类型 我在转换为可为空类型时遇到问题 这是我的转换方法 public static object ChangeType object value Type
  • 绑定到 AvalonDock 2 中的 LayoutAnchorableItem 可见性

    我正在尝试绑定Visibility of LayoutAnchorableItem到 ViewModel 中的布尔值 以便我可以以编程方式显示和隐藏可锚定
  • .rmd 文件的访问名称并在 R 中使用

    我正在编织一个名为MyFile rmd 我如何访问该字符串MyFile在编织过程中并将其用于 在 YAML 标头的标题部分中使用 在后续的 R 块中使用 title r rmarkdown metadata title author My
  • 如何在maven antrun插件中执行输入任务

    我创建了一个 Maven 项目 我正在尝试运行外部脚本 在此外部脚本中 我使用 read 命令来提出问题并获得答案 如果我做一个 它会起作用sudo mvn 包 with 执行 maven 插件 http www mojohaus org
  • Android 位图图像缓存

    嗨 我正在 Android 中实现图像缓存 经历过这个 http developer android com training displaying bitmaps cache bitmap html http developer andr
  • 如何在滑块上方添加刻度和标签?

    我尝试使用 Slider 划分看起来不错 值 gt 50 10 20 但是 如何在滑块上方添加刻度和标签 Expect 勾选将根据滑块位置改变颜色 Actual Slider min 0 max 100 value value onChan
  • UITableView的separatorEffect属性有什么用?

    iOS 8 中的新功能是separatorEffect属性 您可以为其分配 UIVisualEffect 有谁知道这是做什么用的吗 我试过了 但我不认为它有任何 呃 视觉效果 我想知道完全相同的事情 所以我放了一个Github https
  • random.seed():它有什么作用?

    我有点困惑什么random seed 在 Python 中是这样的 例如 为什么下面的试验会 一致地 做他们所做的事情 gt gt gt import random gt gt gt random seed 9001 gt gt gt ra
  • wxPython:在现有 wx.Panel 上覆盖 wx.Panel 的好方法

    我有一个 wx Frame 其中有一个主 wx Panel 其中有几个小部件 我想要其中的一个按钮来启动 帮助面板 这个帮助面板可能是一个wx Panel 我希望它覆盖整个主wx Panel 不包括wx Frame的菜单栏 帮助按钮上应该有
  • 如何在 HTML 文件中包含 python 脚本?

    我该如何放置这个Python脚本 a f d s a x 1 scope vars for i in a scope x 1 print a x html 文件里面 像这样 如果你想创建一个html 不一定显示它 html file ope
  • pygame中盒子的连续移动

    我编写了以下代码来创建一个简单的游戏 当您单击键盘上的箭头时 一个框会在游戏中移动一个单位 我试图做到这一点 以便如果我按下任何箭头按钮 盒子将继续朝该方向移动 直到按下另一个箭头 因此 如果我按一次向右箭头而不是快速移动 50 像素 它将
  • 如何使用 ES6 样式导入添加外部 javascript 库?

    我无法准确理解如何在新的 ES6 项目中使用旧的 javascript 库 我正在查看一个使用 webpack 编译 使用 ES6 编写并使用 Babel 转译的 React 项目 每个组件都遵循import from 符号 我想在项目中使
  • 类继承命名

    我想继承 DevExpress ComboBoxEdit 控件 并且想知道将我的类命名为与 DevExpress 类相同的名称是否是不好的做法 这是派生类声明 using System using System Collections Ge
  • 如何在 Jenkins Freestyle 项目中使用可锁定资源插件中的 Groovy 表达式

    这个问题是针对旧版本提出的可锁定资源插件 https wiki jenkins ci org display JENKINS Lockable Resources Plugin 旧版本中的错误自2 1版本以来已得到修复 然而 没有描述如何在
  • 使用 Buildbot 支持多个存储库

    目前 Buildbot 不支持多个存储库 如果需要这一点 则需要运行单独的 Buildbot 实例 我仍然很好奇是否有人想出了一个创造性的解决方法来让这个功能正常工作 Update 这个答案最近收到了一些反对票 请注意 这个答案适用于 20
  • 刚刚通过 NuGet 更新了 ImageResizer,无法运行应用程序,因为它找不到 BundleAttribute

    我只是想更新 Azure 存储 但这意味着我需要更新 ImageResizer AzureReader 并更新应用程序以使用 Net 4 5 2 Azure 站点设置为 Net 4 6 现在我已经拥有了最新版本的所有内容 我已经清理并重建了
  • Prismic - 如何在不暴露访问令牌的情况下进行 API 调用

    我正在构建一个 vue js Web 应用程序 我想对我的 prismic 存储库进行相应的调用 但我不知道如何在不暴露我的访问令牌的情况下执行此操作 我正在使用所示的其余 api 方法here https prismic io docs
  • 背景图像:如果图像很小,如何填充整个div,反之亦然

    我有三个问题 当我尝试在较小尺寸的 div 中使用背景图像时 div 仅显示图像的一部分 如何显示图像的完整或特定部分 我有一个较小的图像 我想在更大的 div 中使用 但不想使用重复功能 CSS 有什么方法可以控制图像的不透明度吗 调整图
  • 如何隐藏 Akka 远程 Actor 来查找?

    我正在运行 Akka 2 0 2 微内核 并希望为不受信任的远程参与者实现身份验证方案 首先想到的是设置一个身份验证参与者 当身份验证成功时 该参与者会返回对工作参与者的引用 但是 我应该如何保护工作参与者不被简单地通过 actorFor