如何让Django使用openid connect在Key斗篷中尝试多个领域?

如何让Django使用openid connect在Key斗篷中尝试多个领域?,django,keycloak,Django,Keycloak,简介 我们有一个允许内部用户和外部用户登录的web应用程序,我们希望将KeyClope中的两组用户分成不同的领域,例如,内部领域和外部领域。我们理想的身份验证方法是OpenID-Connect 问题 大多数Django OIDC库允许在Django设置中指定一个OIDC客户端配置。然而,考虑到OIDC的工作方式,一个客户机配置只适用于一个领域,因为客户机是在一个领域内配置的 我遇到过这个库,它似乎能够在数据库中配置客户端配置,我需要实现自己的中间件来动态地将请求路由到相应的领域,请参见第节 不幸

简介

我们有一个允许内部用户和外部用户登录的web应用程序,我们希望将KeyClope中的两组用户分成不同的领域,例如,
内部领域
外部领域
。我们理想的身份验证方法是
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。该客户:

        • 可以具有
          访问类型
          机密
        • 标准流已启用
          开启
        • Valid Redirect uri
          例如,将其设置为您的keydape IP,后跟“*”*
        • 网站来源
          +
      • 拯救

    请记住,其中一些配置可能必须根据您自己的需要进行调整

    现在,如果一切都设置正确,则在KeyClope
    内部领域
    登录页面将显示一个新按钮,存储在
    外部领域
    上的用户可以单击该按钮对
    外部领域
    进行身份验证

    现在,您在
    内部领域
    登录页面将应用程序配置为借出,来自内部领域的用户立即在那里进行身份验证,来自外部领域的用户单击“新建”按钮以显式针对外部领域进行身份验证

    此设置或多或少类似于用户希望登录到您的应用程序但使用其社交媒体帐户的用例