如何让Django使用openid connect在Key斗篷中尝试多个领域?
简介 我们有一个允许内部用户和外部用户登录的web应用程序,我们希望将KeyClope中的两组用户分成不同的领域,例如,如何让Django使用openid connect在Key斗篷中尝试多个领域?,django,keycloak,Django,Keycloak,简介 我们有一个允许内部用户和外部用户登录的web应用程序,我们希望将KeyClope中的两组用户分成不同的领域,例如,内部领域和外部领域。我们理想的身份验证方法是OpenID-Connect 问题 大多数Django OIDC库允许在Django设置中指定一个OIDC客户端配置。然而,考虑到OIDC的工作方式,一个客户机配置只适用于一个领域,因为客户机是在一个领域内配置的 我遇到过这个库,它似乎能够在数据库中配置客户端配置,我需要实现自己的中间件来动态地将请求路由到相应的领域,请参见第节 不幸
内部领域
和外部领域
。我们理想的身份验证方法是OpenID-Connect
问题
大多数Django OIDC库允许在Django设置中指定一个OIDC客户端配置。然而,考虑到OIDC的工作方式,一个客户机配置只适用于一个领域,因为客户机是在一个领域内配置的
我遇到过这个库,它似乎能够在数据库中配置客户端配置,我需要实现自己的中间件来动态地将请求路由到相应的领域,请参见第节
不幸的是,这个库已经两年没有更新了,似乎不再维护
问题
我不知道django的情况,但从KeyClope方面来说,您可以将外部领域配置为内部领域的身份提供者。您可以阅读有关身份中介的信息 为此,请转到管理控制台并执行以下操作:
- 选择您的
,然后单击内部领域
身份提供者
- 在页面右侧,从
下拉菜单中选择addprovider…
。它将弹出keydape OpenID Connect
表单,从那里设置:addidentityprovider
- 别名
- 将
、授权URL
、令牌URL
、注销URL
和用户信息URL
发送到可以在颁发者
上找到的对应端点。众所周知的端点(即外部领域
)/auth/realms/.众所周知的/openid配置
- 对于
,您可以选择客户机身份验证
客户机机密发送为post
- 对于
和Client ID
,首先在Client Secret
,并在此处使用其客户端ID和客户端Secret。该客户:外部领域中创建一个新的客户端
- 可以具有
访问类型
机密
:标准流已启用
开启
例如,将其设置为您的keydape IP,后跟“*”*Valid Redirect uri
:网站来源
+
- 可以具有
- 拯救
内部领域
登录页面将显示一个新按钮,存储在外部领域
上的用户可以单击该按钮对外部领域
进行身份验证
现在,您在内部领域
登录页面将应用程序配置为借出,来自内部领域的用户立即在那里进行身份验证,来自外部领域的用户单击“新建”按钮以显式针对外部领域进行身份验证
此设置或多或少类似于用户希望登录到您的应用程序但使用其社交媒体帐户的用例