在Django python项目中启用SSO以进行用户身份验证,并使用KeyClope作为身份代理

2024-06-08 19:53:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在django python项目中启用SSO,使用Key斗篷作为身份代理,使用Microsoft AD作为身份提供者(其中Key斗篷将委托客户机的身份验证请求给AD)

应用程序的技术堆栈: 前端-反应, 后端-django python

为此,我使用django中的python Key斗篷库与Key斗篷进行通信。我能够实现的是:设置与Key斗篷的连接,并在提供用户名和密码时获取访问令牌和刷新令牌,如下所示:

        # Create Keycloak instance
        self.keycloak = KeycloakOpenID(server_url=self.server_url,
                                       client_id=self.client_id,
                                       realm_name=self.realm,
                                       client_secret_key=self.client_secret_key)

        # Get WellKnow
        self.config_well_know = self.keycloak.well_know()

        # Get Token
        self.token = self.keycloak.token("user","pwd")

        # get userinfo
        self.userInfo = self.keycloak.userinfo(self.token['access_token'])
        # userinfo returned ok 

但在这里,我提供了用户名和密码,我不应该这样做,因为我想在Microsoft AD中启用sso(注意:Keyclope realm配置为使用Microsoft AD作为默认IDP),并且只有用户名应该足以在Microsoft中启用sso。但它只传递用户名时出错

问题: 如何使用KeyClope broker对Microsoft AD中的用户进行身份验证,以及相同的语法应该是什么


Tags: djangokeyselfclienttoken身份验证密码身份
1条回答
网友
1楼 · 发布于 2024-06-08 19:53:48

在示例领域中创建两个客户端。其中一个用于React应用程序,设置为公共客户端,您应该使用Javascript适配器生成访问令牌,您可以使用头传递该令牌,而后端Django应用程序设置为机密客户端,可以访问从前端React应用程序生成的访问令牌。使用pythonkeydape库对令牌的正确性进行内省

尝试使用OIDC/SAML在您的示例领域中设置身份代理。使用您的Azure应用程序元数据URL与相关映射程序一起设置配置文件

完成此设置后,您应该让SSO正常工作

相关问题 更多 >