如何使用akka-streams和akka-http为客户端应用程序处理身份验证

时间:2017-12-11 13:13:58

标签: akka akka-stream akka-http

我正在使用Akka Streams和Akka Http编写应用程序,该应用程序需要连接到经过身份验证的Web服务(返回身份验证令牌),然后需要定期查询服务并可能在响应中执行其他操作查询(下载文件等)。验证令牌在一定时间后超时,因此需要刷新。

我应该如何处理身份验证令牌?它需要传递到图中的不同流程(我查询服务的任何地方),当身份验证令牌变为无效时,我需要请求新的。

一个想法是在流外部执行身份验证请求,然后在实现流时传递令牌,以便每个流在实现过程中将令牌作为参数获取。然后当令牌最终超时时,流将失败并且我将其拆除并创建一个新的。我认为这样可行,但看起来有点笨拙,我想知道是否有办法完全使用基于流的世界。

我想到的一点是,身份验证令牌可以压缩,其他数据流经流并传递给需要它的每个Flow元素。然后,如果令牌在某个时刻失败,则流以某种方式请求具有某种反馈流或恢复机制的新的令牌。但我不知道这是否可能或如何实施。

我还没有想到第三种方法,或者我在Akka流或Akka HTTP中错过了什么?

1 个答案:

答案 0 :(得分:0)

akka-http建立在akka-streams之上,因此您已经了解了这一点。对于使用akka-http的用户会话管理,请查看akka-http-session。您可能还想阅读this excellent post

您还可以查看我最近上传的一些示例代码,这些代码不使用akka-http-session - available here。希望其中一些材料有所帮助。