Apache2反向代理,通过OpenID连接进行身份验证,通过ldap进行授权

Apache2反向代理,通过OpenID连接进行身份验证,通过ldap进行授权,apache2,authorization,reverse-proxy,openid-connect,mod-auth-openidc,Apache2,Authorization,Reverse Proxy,Openid Connect,Mod Auth Openidc,我正在尝试设置一个反向代理,该代理需要针对OpenID连接身份提供程序进行身份验证 然后,用户授予反向代理对其数据的访问权限 如果用户是特定LDAP组的成员,则代理背后的某些应用程序只能由用户访问。遗憾的是,应用程序是转储,无法授权自己,因此反向代理必须处理该部分 设置身份验证部分并不难我要解决的是授权部分。我有一个工作示例,它要求用户名和密码超过BasicAuth OpenID Connect的想法是,资源服务器(在我的例子中是代理)永远不会知道用户的密码,也不必检查密码。委托给OpenID连

我正在尝试设置一个反向代理,该代理需要针对OpenID连接身份提供程序进行身份验证

然后,用户授予反向代理对其数据的访问权限

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

设置身份验证部分并不难我要解决的是授权部分。我有一个工作示例,它要求用户名和密码超过BasicAuth

OpenID Connect的想法是,资源服务器(在我的例子中是代理)永远不会知道用户的密码,也不必检查密码。委托给OpenID连接标识提供程序的

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

我还没有看到一种方法可以跳过ldap模块的链接,从其他地方获取用户名,比如OpenID连接ID令牌或我的自定义头


有什么想法/建议/方法/技巧吗?

这里有一篇文章展示了如何将
mod\u auth\u openidc
mod\u authnz\u ldap
结合起来: :

OIDCProviderMetadataURLhttps://accounts.google.com/.well-known/openid-configuration
舌苔
OIDClientCret
白蚁http://example.com/example/redirect_uri
OIDCcope“openid电子邮件配置文件”
#将远程用户设置为电子邮件地址。
#这是mod_authnz_ldap用作basedn之后的第一个参数的值。
#在下面的示例中,LDAP中的REMOTE_USER=email=mail属性。
用户索赔电子邮件
AuthType openid连接
AuthLDAPURL“ldap://example.com/ou=people,dc=example,dc=com?mail?sub?(objectClass=*)”
AuthLDAPGroupAttribute成员
需要ldap组cn=MyTestAccess,ou=Groups,dc=example,dc=com
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>