我是安全性的新手,我正在努力了解如何在不过度破坏的情况下实现适当的安全性。
以下是我的问题。
1.我不想让第三方客户端使用我的API,因此我不认为OAuth 2.0有任何重要性。因此,我希望在我的Sping Boot Security中使用keycloak(或Ory Kratos)生成的会话。关于如何做到这一点,有任何指导。
1.我遇到过一个应用程序https://opstra.definedge.com/,它的安全性是使用keycloak实现的(可以看到URL模式)。但是在请求中,当执行任何网络请求时,我在chrome DevTools Network标签中看不到任何JWT令牌。我认为他们正在以我想要的方式实现它。关于它是如何实现的任何概述。
1条答案
按热度按时间7eumitmz1#
我不是建筑师,但我很确定他们在Opstra中不使用Keycloak会话(他们必须在Keycloak servlet中运行Opstra)。看起来更像是他们使用OAuth2对来自Java客户端的用户进行身份验证,并且该客户端启用了自己的会话(
opstra.definedge.com
和sso.definedge.com
的JSESSIONID cookie).很有可能这个java客户端使用访问令牌来授权对资源服务器的请求,我们只是不能从浏览器中看到它。限制允许使用您的API的客户端与授权方法关系不大:
限制您的API客户端更多的是关于CORS配置,其目的就是:筛选哪些来源(主机+端口)可以访问哪些资源位置(URL)
Keycloak中有一个机密客户端的概念,其中客户端必须提供除client-id之外的密码,以交换访问令牌的授权代码,但这不适用于富客户端(在您不信任的设备上运行的客户端):Angular、Vue、React、原生移动的应用程序等代码可以通过反向工程读取密码。但也可以将您自己的Java客户端配置为“机密”,因此,仅允许此客户端获取访问令牌以查询资源服务器(API)。
OAuth2带来的不仅仅是简化多客户机场景,而且带有无会话java应用程序的JWT极大地简化了水平可伸缩性和容错性。