Java 如何使用KeyClope保护angular/spring应用程序?

Java 如何使用KeyClope保护angular/spring应用程序?,java,angular,spring,keycloak,openid-connect,Java,Angular,Spring,Keycloak,Openid Connect,我有一个spring boot(后端)和angular(前端)应用程序,我想用KeyClope保护它(用于身份验证) 我有一个非常基本的部署,其中由spring创建的可执行jar也服务于客户机代码(从angular) 我已经看过几个教程,其中正面和背面是分开的,正面使用code flow+pkce将其身份验证委托给Key斗篷,而背面是无状态的,并检查是否存在由Key斗篷实例认证的jwt令牌 但是,由于我有一个后端服务器,我希望避免使用公共客户端,而是依赖服务器端的后台通道令牌交换。因此,前线人员

我有一个spring boot(后端)和angular(前端)应用程序,我想用KeyClope保护它(用于身份验证)

我有一个非常基本的部署,其中由spring创建的可执行jar也服务于客户机代码(从angular)

我已经看过几个教程,其中正面和背面是分开的,正面使用code flow+pkce将其身份验证委托给Key斗篷,而背面是无状态的,并检查是否存在由Key斗篷实例认证的jwt令牌

但是,由于我有一个后端服务器,我希望避免使用公共客户端,而是依赖服务器端的后台通道令牌交换。因此,前线人员不应该知道keydove实例


这是可能的/是最佳做法吗?是否有一个前台库可以帮助我实现这一点?我遇到过库keydape,但它似乎是针对第一种情况,即SPA直接连接到keydape,而不是使用后端服务器。

在这种情况下,您不需要前端库。在前端,您应该只处理用户会话(拥有会话cookie)并每次将cookie发送到后端。然后,后端服务器应该使用任何oauth客户机与您的KeyClope服务器通信,一旦获得令牌,它就可以将它们与会话句柄一起保存在db中

以下是此流的外观:

  • 请求客户端->后端服务器->用302回复KeyClope授权端点。注册的重定向uri应该是后端服务器公开的uri
  • 用户执行身份验证/同意等
  • keydape重定向到带有代码的重定向uri
  • 后端接收代码(当它侦听重定向uri地址时),并与KeyClope交换代码
  • 后端接收访问令牌并将其与会话ID一起保存在数据库中
  • 当客户端通过其会话向后端发出另一个请求时,后端从DB中选择一个访问令牌,并可以调用API