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

ovfsdjhp  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(295)

我有一个spring-boot(后端)和angular(前端)应用程序,我想用keydrope保护它(用于身份验证)。
我有一个非常基本的部署,其中spring创建的可执行jar也服务于客户机代码(来自angular)。
我看过几个教程,前面和后面是分开的,前面使用代码流+pkce将其身份验证委托给keydrope,而后面是无状态的,检查是否存在由keydrope示例认证的jwt令牌。
但是,由于我有一个后端服务器,我希望避免使用公共客户机,而是依赖于服务器端的后通道令牌交换。所以前线不应该知道keydeap示例。
这可能吗/这是最佳做法吗?有没有一个前台库可以帮助我实现这个目标?我遇到过keydeap库,但它似乎是针对第一种情况,spa直接连接到keydeap,而不是使用后端服务器。

kknvjkwl

kknvjkwl1#

在这种情况下,您不需要前端库。在您的前端,您应该只处理用户会话(有一个会话cookie),并将cookie每次发送到您的后端。然后,后端服务器应该使用任何oauth客户机与keydepot服务器通信,一旦获得令牌,它就可以将它们与会话句柄一起保存在db中。
下面是这个流的样子:
请求客户机->后端服务器->用302回复keydepot授权端点。注册的重定向uri应该是后端服务器公开的uri
用户执行身份验证/同意等。
key斗篷重定向到带有代码的重定向uri
后端接收代码(当它侦听重定向uri地址时),并与key斗篷交换代码。
后端接收访问令牌并将其与会话id一起保存在数据库中。
当客户端通过会话向后端发出另一个请求时,后端从数据库中选择一个访问令牌,并可以调用api。

相关问题