scala - 使用Akka-Http进行身份验证

标签 scala authentication oauth-2.0 amazon-cognito akka-http

我们正在开发一个iOS应用,用户需要使用电子邮件+密码(或手机号码)进行身份验证。我们的后端由几个使用Akka-Http的微服务组成。它需要快速,可扩展,并发,并且身份验证和授权应该可以在我们的多种服务中工作。
我正在尝试找出要使用的身份验证方法。
Akka-HTTP当前提供基本身份验证和OAuth2的部分实现。

因此,起初我们考虑使用基本身份验证(过于简单且功能不足),Oauth1(过于复杂),因此我们转向了OAuth-2.0,因为它是一种标准。

然后,我们考虑了AWS Cognito,因为它结合了Oauth-2.0和OpenID Connect,从而提供了OAuth2缺少的身份验证机制。
http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html

然后我们意识到OAuth2仅用于使用第三方进行身份验证-实际上,我们不需要第三方身份验证提供程序-也许我们需要自己进行身份验证,而使用Cognito是一种过大的杀伤力,它会在我们的外部创建额外的api调用微服务...

因此,我读了一些有关使用WSSE规范创建自己的自定义身份验证提供程序的信息:
http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html
我也使用Spray找到了这个示例,但是我敢肯定它与Akka-Http并没有什么不同:
http://danielasfregola.com/2015/06/29/how-to-create-a-spray-custom-authenticator/
它看起来过于简化,并且没有 token 过期...

所以我的问题是,我缺少什么吗?我应该选择哪种方法,在哪里可以找到示例?

我觉得我要绕圈了,我们将不得不从头开始编写我们自己的自定义身份验证提供程序,这有点没有道理。毕竟,几乎每个人都需要身份验证,这应该是一个标准。

最佳答案

我最近一直在使用SoftwareMill的akka-http-session库,发现它易于集成。它支持基于案例类的 session ,JWT,具有可插拔存储的刷新 token ,使用 header 和CSRF token 以及一些在路由中使用的简单指令。

关于scala - 使用Akka-Http进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35151680/

相关文章:

Scala 隐式参数的类型查找失败

使用 scala 解析器组合器解析基于缩进的语言

java - 将 Apache Camel 与 Amazon AWS 结合使用

azure - 从第三方 OAuth 提供商检索访问 token

azure - 如何从 api 范围向 id token 添加范围

scala - 我可以在 Scala 中定义和使用类和对象之外的函数吗?

Swift AWS Cognito 登录在多次工作后抛出 "Invalid Refresh Token"

facebook - 登录按钮 : doesn't work when user is logged in Facebook

mysql - 如何从命令行连接到 MySQL

node.js - Passport-azure-ad, token 验证