【问题标题】:Should I use OAuth (or what else) for the backend of a mobile app? - There is only *one* "third-party" application in such cases我应该将 OAuth(或其他什么)用于移动应用程序的后端吗? - 在这种情况下只有*一个*“第三方”应用程序
【发布时间】:2020-03-10 12:13:29
【问题描述】:

我正在开发一个移动应用程序及其后端 (Java)。我应该如何验证用户(使用我们自己的帐户系统,而不是 Google/GitHub 帐户之类的东西)?一种方法是创建 OAuth2 服务器。不过,我的后端不是巨人,我在OAuth的定义中只有一个“第三方应用”……

所以我想知道在这样的移动应用中最好的身份验证方式是什么?谢谢!

附:另一个想法是使用 cookie,就像过去开发浏览器网页时一样。但我很少看到应用程序这样做。我看到他们中的大多数人发送Authorization: Bearer the_token_values...

P.S.2 我正在使用 Flutter 和 Java Spring。

【问题讨论】:

  • 你检查过智威汤逊吗?
  • @Turab 是的,我也检查过。听过很多人比较 JWT 和 OAuth 的声音……不过我觉得 JWT 也有点重了。

标签: java spring authentication flutter oauth


【解决方案1】:

如果您的身份验证系统无论如何都支持 OAuth,请使用它。 OAuth 的优势在于标准化。使用标准协议有很多优点。最重要的是,很难想出一个防弹认证系统。在过去十年中,许多备受瞩目的黑客攻击都归因于本土认证协议。

使用 OAuth 或其他广泛接受的协议的另一个优点是库的可用性。如今,您可以找到适用于任何平台和任何语言的 OAuth 库。

请记住,OAuth 并不是唯一的游戏。还有其他很好的协议。可能最防弹的方法是 mTLS。它需要强大的公钥基础设施,但它可能是最难破解的。如果您在使用 Active Directory 并编写内部应用程序的旧学校环境中,请考虑使用 Kerberos。最后是 SAML,它非常有进取心,使用起来很痛苦,但它比普通的 OAuth 更灵活。

【讨论】:

  • 非常感谢!我主要担心的是 OAuth 太“重”,因为除了编写一些 Java Spring 代码之外,我们还需要设置一个身份验证服务器。最初我认为身份验证非常成熟,应该“一键”完成,而不是设置单独的服务器等:)
  • 顺便问一下,关于认证服务器,能否请您推荐一些,谢谢! (我搜过看到keycloak,但不知道是不是最好的)
  • 取决于您的环境。从未使用过 Keycloak,但听说过。我主要使用企业服务器,例如 ADFS 和 Auth0 on prem。对于开源的,看看 IdentityServer(基于.NET,没有预构建的 UI)、OpenAM(很老,但仍然支持大量协议)、go-oauth 和 light Oauth 也不错。
  • @Viad 嗨,我对一些简单的细节感到困惑……请您回答一下好吗?非常感谢!问题链接---->stackoverflow.com/q/61313694/4619958
猜你喜欢
  • 1970-01-01
  • 2015-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-14
  • 1970-01-01
  • 2017-05-09
  • 2011-01-17
相关资源
最近更新 更多