【问题标题】:OAuth2 for mobile apps with simplest client-server architecture?具有最简单客户端-服务器架构的移动应用程序的 OAuth2?
【发布时间】:2020-08-02 10:30:47
【问题描述】:

我们有一个经典的 C-S(客户端-服务器)架构,即一个移动应用程序和一个业务服务器。我们有我们自己的 帐户系统(不使用第三方帐户,例如 Google/Facebook 帐户)。我know 我应该使用 OAuth2 进行身份验证。问题是,我应该如何实现

有两件事我在网上没有找到:

  1. 我们使用的是我们的自己的帐户系统 - 没有 Google/Facebook 帐户。
  2. 用户应在本机应用 UI 中输入密码,而不是在应用中嵌入的浏览器网页中。

问题:

  1. 我认为我们可以使用“资源所有者密码授予”模式。用户在本机 UI 中输入密码,然后我们收集并向服务器发送 HTTPS 请求等。但是我有 seen 有人说它不安全......所以我应该使用它吗?
  2. 如果我们应该使用“授权码”模式,我应该如何让用户在 native UI 中输入他的密码?

非常感谢!

附言。如果我们没有自己的账户系统,单纯依靠谷歌/Facebook的账户,那么一切都很简单。我们可以在互联网上使用任何博客或articleanswer。但是我们需要我们自己的帐户系统

【问题讨论】:

  • 根据您提供的信息,听起来您实际上并不需要 oauth2(顺便说一句,这不是身份验证协议),而您只会在 oauth2 中引入不必要的复杂性。
  • @GaborLengyel Er 那么我应该使用哪种方法?人们在link 中告诉我我应该使用 OAuth,所以我真的很困惑......谢谢!
  • 好吧,我错过了它是一个移动应用程序的部分。为此,您需要令牌,并且从那里另一个问题的接受答案是正确的,oauth2 是具有知名库的标准解决方案。 (如果它是一个常规的 Web 应用程序,那么您所需要的只是一个普通的旧会话。)我不是 Java 专家,所以我不知道对于 Java 中众所周知的令牌身份验证解决方案还应该考虑什么。它还取决于您要实现的工作流程(是否可以在浏览器中提供一次密码,然后使用本机 ui 等)。
  • @GaborLengyel 谢谢!呃恕我直言,我很困惑如何做 mobile app 端,而不是服务器端(因为我将使用标准库),语言无关紧要,这只是逻辑......所以可以你请提供一些建议?谢谢!

标签: spring security flutter oauth-2.0


【解决方案1】:

资源所有者流程在与 3rd 方身份验证一起使用时被认为是不安全的,例如,您的移动应用正在尝试访问用户 Dropbox 或 Gmail 电子邮件中的文件。如果您拥有系统帐户系统、资源和应用程序的所有部分,那么您应该使用资源所有者密码流程来确保安全。

这是一个更简单的流程,但是它有一些缺点。就像您将无法与其他第 3 方或企业系统联合,并且您无法从单点登录中受益。如果这些都不适用于您,请继续使用资源所有者密码流。

你可以在这里找到一个很好的处理方法:https://auth0.com/blog/oauth-2-best-practices-for-native-apps/

【讨论】:

  • 非常感谢!是的,我不需要其他方登录,也不需要 SSO。我会看看链接。谢谢!
猜你喜欢
  • 2017-10-08
  • 1970-01-01
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多