1

我正在尝试设置一个需要针对 OpenID Connect 身份提供者进行身份验证的反向代理。

用户然后授予反向代理访问他的数据。

如果用户是特定 LDAP 组的成员,则代理后面的某些应用程序只能由用户访问。可悲的是,应用程序是转储并且无法自行授权,因此反向代理必须处理该部分。

使用mod_auth_openidc设置身份验证部分并不难。我挣扎的是授权部分。我有一个mod_authnz_ldap的工作示例,它需要用户名和密码而不是BasicAuth

OpenID Connect 的想法是资源服务器(在我的例子中是代理)永远不会知道用户的密码,也不必检查它。这被委托给 OpenID Connect 身份提供者。

所以我没有这种方法所需的密码。我的想法是创建一个带有 oidc auth 的虚拟主机,它拒绝x-my-oidc-username来自客户端的某些标头,一旦经过身份验证就设置此标头并将请求传递给另一个 vhost 绑定,127.0.0.1因此无法绕过身份验证直接访问它。该虚拟主机仅将标头作为经过身份验证的用户名并运行 LDAP 授权。

我还没有看到跳过 ldap 模块的身份验证阶段并从其他地方(如 OpenID Connect ID 令牌)或我的自定义标头获取用户名的方法。

任何想法/建议/方法/提示?

4

1 回答 1

1

有一篇文章展示了如何结合mod_auth_openidcmod_authnz_ldap这里: 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>
于 2016-11-26T11:50:08.607 回答