java – Web应用程序安全体系结构
我有一个Java Spring驱动的REST API服务器连接PostgreSQL数据库和一个Java的Spring Web服务器,它使用JavaScript(现在是浏览器,但将来也是移动应用程序)从REST API提供内容到客户端. 我已经阅读了许多文章和主题如何保护REST API,但我还没有做出最终决定.我不想拥有基本授权,因为它没有意义,因为我需要在JavaScript中存储凭据,任何进入网页和开发者控制台的人都可以轻松访问和阅读.我不想向最终用户显示任何凭据,因此我无法将它们保留在客户端. 我已经阅读了很多关于JWT的内容并且差不多决定实现它,但我听说它有一些缺点,并且从那时起就不那么肯定,如果它是我想选择的选项.我知道还有oAuth 1.0或oAuth 2.0,但我不知道我是否想要这么复杂的东西.我还希望将散列的用户凭据存储在我自己的数据库中,以便不依赖于社交媒体或Google等任何其他凭据提供程序. 现在我在我的Web服务器上创建另一个层作为代理,希望它允许我使用Spring Security在这个代理级别上验证用户并使用某种类型或cookie或某些东西进行身份验证,但我不确定它是否是可行的方式,它增加了响应时间,增加了复杂性,需要我为这些端点编写控制器方法.我的架构现在如下: 客户端(浏览器) – >网络服务器 – > REST API服务器 – > D b 我还拒绝了所有外部连接,只允许localhost访问tomcat级别的REST API,因此我必须只在Web服务器上实现安全级别,允许在Web服务器和REST API之间进行免费信息传输,因为它无法访问无论如何. Web服务器和REST API与Tomcat实例运行在同一服务器上. 我也不太确定这种架构是否允许我通过Web服务器验证移动应用客户端. 我非常感谢你在这件事上给我的任何建议.我在安全方面不是很有经验,所以我有点迷失了我应该做的事情.这种架构是否有任何意义,或者我是否应该直接从任何类型的客户端询问REST API,无论是来自不同IP的网页还是移动应用程序,只有安全的Rest API?如果我想保护我的网页的某些子页面或移动应用程序的某些部分应该是一个完全不同的层? 谢谢您的帮助. 最佳答案
您已经通过OAuth,JWT令牌等.如果您不想使用它们,那么您可以创建自己的基于令牌的身份验证系统.(比如’TokenHandler’).
这个TokenHandler如何工作? TokenHandler将像一个网关服务器,即您的每个REST API请求将通过此服务器应用程序路由.因此,您将通过标头中的authToken解决移动和Web应用程序调用的混乱问题.此服务器应用程序的主要职责是接受令牌并对数据库进行验证,其中维护所有令牌详细信息.此DB将包含有关上次用于验证令牌时的时间戳的信息,以确定您的验证规则. 如何生成令牌? 什么可以作为验证规则? 客户方如何处理这个问题? 如果您有任何问题或建议,我想进一步讨论. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |