Openstack Keystone 作为服务提供商,401 - SSO 未授权异常

Openstack Keystone 作为服务提供商,401 - SSO 未授权异常

我们目前正在使用 OpenStack Ansible(Yoga 版本)为我们大学的 OpenStack 环境实施 SSO。我们的目标是允许学生通过身份提供商使用他们的大学凭据登录 - 目前我们使用我们自己的 Keycloak 实例作为 IdP。计划是为首次用户自动创建一个新项目,而返校学生将被重定向到他们现有的项目来管理他们的实例。

对于初始测试,我们将所有用户引导至单个项目。最终,我们希望编写脚本,在控制器节点上动态创建项目以供首次登录使用。但是,我们遇到了一些问题:

我们在user_variables.yml文件中的Keystone配置如下:

keystone_sp:
  apache_mod: 'mod_auth_openidc'
  cadf_notifications: true
  trusted_dashboard_list:
    - "https://openstack-example.com/auth/websso/"
    - "http://example.keycloak.com/realms/openstack*"
    - "https://openstack-example.com/auth/login/"
  trusted_idp_list:
    - name: "oidc-idp"
      oidc_provider_metadata_url: http://example.keycloak.com/realms/openstack/.well-known/openid-configuration
      oidc_client_id: ********
      oidc_client_secret: *********
      oidc_crypto_passphrase: ******
      oidc_redirect_uri: https://openstack-example.com/v3/OS-FEDERATION/identity_providers/oidc-idp/protocols/openid/auth
      entity_ids:
         - 'http://exmaple.keycloak.com/realms/openstack'
      federated_identities:
        - domain: default
          project: fedproject
          group: fedgroup
          role: member
      protocols:
        - name: openid
          mapping:
            name: openid-mapping
            rules:
              - remote:
                  - type: email
                local:
                  - group:
                      name: fedgroup
                      domain:
                        name: Default
                    user:
                      name: '{0}'

此设置基于 openstack文档。经过多次尝试不同的配置后,这个配置成功重定向到我们的 Keycloak IdP 进行身份验证。但是,登录后,当重定向回 OpenStack 时,我们收到 401 未授权错误,提示“您发出的请求需要身份验证”。

SAML 跟踪器日志确认 Keycloak 发出了有效令牌以及用户信息。尽管如此,我们在 Keystone 容器、Apache2 和控制器日志中没有发现其他错误详细信息。这让我相信问题可能出在映射配置上,尽管在使用 keystone-manage 映射引擎工具进行测试时它似乎可以正常工作。但文档声称 401 异常可能是由映射引起的。

对于如何解决该问题的任何见解或建议都将不胜感激,特别是关于身份验证期间的映射过程。

我也在寻求有关如何提取更详细的错误信息的建议。目前,日志除了 401 错误消息之外没有显示太多信息。我是否遗漏了什么,或者这就是 OpenStack 在这种情况下通常提供的所有信息?

感谢您的帮助和指导。

相关内容