Java 如何设计一个基于电子邮件链接的用户认证系统

Java 如何设计一个基于电子邮件链接的用户认证系统,java,authentication,design-patterns,oauth,oauth-2.0,Java,Authentication,Design Patterns,Oauth,Oauth 2.0,我正在处理一个设计问题,如果用户来自我发送给他们的电子邮件,我需要对他们进行身份验证。 这些是细节 我的系统中已经创建了具有电子邮件ID的用户 我将通过加密链接向用户发送电子邮件,该链接具有 用户ID还包含一些元数据 如果用户点击电子邮件链接,他应该被引导到一个网站 在那里他可以看到与他有关的细节 该网站是一个仅客户端的网站,它正在调用BE服务器以获取数据并将其显示给用户。现在我想对FE网站和BE服务器之间的api通信进行OAuth身份验证 假设我们已经在BE API中实现了一个Oauth2.0

我正在处理一个设计问题,如果用户来自我发送给他们的电子邮件,我需要对他们进行身份验证。 这些是细节

  • 我的系统中已经创建了具有电子邮件ID的用户
  • 我将通过加密链接向用户发送电子邮件,该链接具有 用户ID还包含一些元数据
  • 如果用户点击电子邮件链接,他应该被引导到一个网站 在那里他可以看到与他有关的细节
  • 该网站是一个仅客户端的网站,它正在调用BE服务器以获取数据并将其显示给用户。现在我想对FE网站和BE服务器之间的api通信进行OAuth身份验证

    假设我们已经在BE API中实现了一个Oauth2.0(两条腿),那么我考虑的方法是

  • 当用户通过电子邮件访问网站时,FE应用程序 从重定向URL获取加密令牌,并使用调用BE API 有效负载中的令牌

  • OAuth没有保护这个特定的BE API,因为FE还没有令牌 由于它是一个客户端应用程序,我无法存储 代码库中的客户端id和密码

  • BEAPI解析加密的令牌,从中获取用户ID,然后 还生成授予类型为“隐式”的oauth访问令牌。 此令牌是短期令牌,作用域仅限于用户ID
  • BEAPI将令牌和用户ID返回给FE

  • FE使用用户ID和令牌通过其他服务器访问用户数据 与所有其他API一样,API也由OAuth保护

  • 此流程旨在让用户更容易访问此数据,并保持可接受的安全性。假设通过令牌加密,我们已经确保了足够的随机性,用户将无法通过随机修改电子邮件中的令牌来访问其他人的数据

    这是一个开放性问题。我正在寻求关于上述方法的建议

    我有没有什么明显的缺陷?
    该方法是否存在较大的安全风险?
    我使用的补助金类型正确吗?
    是否有针对类似要求的文件化方法