我们目前正在使用 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 在这种情况下通常提供的所有信息?
感谢您的帮助和指导。