首页 > 解决方案 > OpenID Connect + Django DRF + React:如何使用?

问题描述

我有一个由两部分组成的 Web 应用程序:使用 Django + Django Rest Framework (DRF) 实现的后端,以及作为 React App 项目的前端。对于身份验证和授权,我使用 Keycloak。

首先进行身份验证,前端应用程序将用户重定向到Keycloak登录页面,在Keycloak收到正确的用户名和密码组合后,将用户重定向回前端应用程序并为前端应用程序提供访问权限密钥和刷新密钥对。

现在,当用户想要调用任何 API 到后端时,它就有了所需的访问密钥。我决定让前端应用也负责刷新访问令牌;但我期待任何更好的解决方案。

由于我需要在我的应用程序中使用授权,所以它在 Keycloak 中的“访问类型”应该设置为“机密”;因此,当我的前端应用程序想要进行身份验证时,它应该提供“客户端密码”。

当我处于开发阶段时,这没有问题,因为我可以轻松地更改代码中的客户端密码。但是当我想为生产构建前端应用程序时,我在生产环境(与开发实例分开)中从我的 Keycloak 实例中硬编码客户端密码,然后构建应用程序。换句话说,对于密钥的任何更改,都需要一个新的构建,这是一个真正的痛苦。

  1. 我是否使用正确的身份验证步骤?
  2. 前端应用程序有什么方法可以在不提供密钥的情况下进行身份验证?
  3. 如果上述问题的答案是“否”(我认为是这样),那么前端应用程序有没有办法在构建后使用客户端密码作为配置值?

标签: reactjsdjangorestdjango-rest-frameworkkeycloak

解决方案


推荐阅读