1 - 现状
- 我们有一个REST API(用Java中的Play框架2.5编码)和四个前端与它交互(两个网络应用程序:后台办公室和我们用React编码的网站,以及两个移动应用程序: Android和iOS)。
- 一切正常,但没有用户管理。
2 - 我们想做什么
- 我们希望添加两个角色的用户管理:用户(可以注册并登录我们的网站和我们的移动应用程序)和管理员(可以做用户可以做的所有事情以及可以登录到后台)。换句话说,管理员可以使用所有Web服务,而用户只能使用其中一些。
- 首先,用户必须能够使用电子邮件和密码注册。
- 第二次(这不是我们的MVP的一部分),我们希望有机会使用Google或Facebook帐户进行注册。
3 - 技术选择
- 经过大量阅读后,我们认为认证步骤由Oauth2处理的认证是合适的选择。
- 但是,在我们的研究过程中,我们找到了让我们犹豫不决的文章,用这些句子来说:
"您应该只在实际需要时才使用OAuth。如果你是
构建一个服务,您需要使用用户的私有数据
存储在另一个系统上 - 使用OAuth。如果不是 - 你可能想要
重新思考你的方法!"
"要明确,开发人员手中的OAuth 2.0很深
对网络安全的理解可能会带来安全感
实现。然而,在大多数开发人员手中 - 一如既往
过去两年的经验 - 2.0很可能产生
不安全的实施。"
- 我们不会立即实施Google或Facebook身份验证,也不会对网络安全有深刻理解,因此我们质疑选择Oauth2的相关性。
4 - 实施
- 我们已经了解了Oauth2的工作方式,并且不会因为客户端的实施而感到害怕,这似乎很简单(并且有很多项目可以帮助实现)。
- 相反,对于服务器端,我们将不得不创建一个授权服务器,它会让我们感到害怕,因为我们不知道该怎么做。自己实现整体似乎是一项相当实质和困难的工作(我们没有找到任何使用Play Java的例子),我们害怕犯错会造成安全漏洞并且不会出现问题。 ; t想要重新发明轮子。我们找到了一些工具,如Apache Oltu或Spring Security(我已经在另一个项目中使用过),但我们不确定它们是否适合我们想要做的事情。
5 - 问题
- Oauth2真的是我们需要的合适选择吗?
- 如果我们选择Oauth2,我们应该怎么做才能实施?试着自己做吗?使用像Apache Oltu或Spring Security这样的工具?
提前感谢您的回答!