我正在尝试设置一个需要针对 OpenID Connect 身份提供商进行身份验证的反向代理。
然后,用户授予反向代理访问其数据的权限。
代理后面的某些应用程序只有当用户是特定 LDAP 组的成员时才能访问。遗憾的是,应用程序是转储的,无法自行授权,因此反向代理必须处理该部分。
设置身份验证部分并不难mod_auth_openidc. 我遇到的困难是授权部分。我有一个工作示例mod_authnz_ldap需要用户名和密码基本认证.
OpenID Connect 的想法是资源服务器(在我的例子中是代理)永远不会知道用户的密码,也不必检查它。该任务委托给 OpenID Connect 身份提供商。
所以我没有这种方法所需的密码。我的想法是创建一个带有 oidc auth 的虚拟主机,它拒绝一些标头,例如x-my-oidc-username
从客户端,经过身份验证后设置此标头,并将请求传递到绑定的另一个虚拟主机127.0.0.1
所以无法绕过认证直接访问。该虚拟主机仅将标头作为经过身份验证的用户名并运行 LDAP 授权。
我还没有找到一种方法来跳过认证阶段的 ldap 模块,并从其他地方(例如 OpenID Connect ID 令牌)或我的自定义标头获取用户名。
有什么想法/建议/方法/技巧吗?
有一篇文章展示了如何组合mod_auth_openidc
and mod_authnz_ldap
here:
https://github.com/pingidentity/mod_auth_openidc/wiki/Authorization#2-mod_authnz_ldap:
OIDCProviderMetadataURL https://accounts.google.com/.well-known/openid-configuration
OIDCClientID <client_id>
OIDCClientSecret <client_secret>
OIDCRedirectURI http://example.com/example/redirect_uri
OIDCScope "openid email profile"
# Set REMOTE_USER to the email address.
# this is the value that mod_authnz_ldap leverages as the first parameter after basedn.
# in the example below, REMOTE_USER = email = mail attribute in LDAP.
OIDCRemoteUserClaim email
<Location /example/>
AuthType openid-connect
AuthLDAPURL "ldap://example.com/ou=people,dc=example,dc=com?mail?sub?(objectClass=*)"
AuthLDAPGroupAttribute member
Require ldap-group cn=myTestAccesss,ou=Groups,dc=example,dc=com
</Location>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)