Apache中使用mod_auth_openidc为双应用配置多OIDCRedirectURI的方法
关于mod_auth_openidc配置多个应用的OIDC重定向URI问题
首先明确:mod_auth_openidc不支持在同一个Apache服务器/虚拟主机上下文内配置多个独立的OIDCRedirectURI,该参数属于全局(服务器或虚拟主机级)配置,无法按<Location>块单独拆分。
不过可以根据你的需求选择以下两种可行方案:
方案1:同一域名下复用全局回调路径,独立配置客户端参数
如果两个应用只是需要使用不同的OIDC客户端(不同ClientID、密钥、权限范围),可以在各自的<Location>块内覆盖对应配置项,共用同一个全局的OIDCRedirectURI。模块会根据请求上下文自动区分处理:
# 全局基础配置(所有应用共用的回调路径) OIDCRedirectURI https://your-domain.com/oauth2/callback OIDCProviderMetadataURL https://your-oidc-provider/.well-known/openid-configuration # 第一个应用的配置 <Location /application_ONE.html> AuthType openid-connect Require valid-user # 覆盖第一个应用的客户端ID OIDCClientID app-one-client-id # 覆盖第一个应用的客户端密钥 OIDCClientSecret app-one-client-secret # 覆盖第一个应用的权限范围 OIDCScope "openid email profile" </Location> # 第二个应用的配置 <Location /application_TWO.html> AuthType openid-connect Require valid-user # 覆盖第二个应用的客户端ID OIDCClientID app-two-client-id # 覆盖第二个应用的客户端密钥 OIDCClientSecret app-two-client-secret # 覆盖第二个应用的权限范围 OIDCScope "openid profile" </Location>
方案2:使用独立虚拟主机配置不同回调路径
如果你的业务必须要求两个应用使用完全独立的回调路径,只能通过创建独立的虚拟主机实现,每个虚拟主机拥有自己的mod_auth_openidc全局配置(包括专属的OIDCRedirectURI):
# 第一个应用的虚拟主机 <VirtualHost *:443> ServerName app1.your-domain.com SSLEngine on SSLCertificateFile /path/to/app1-cert.pem SSLCertificateKeyFile /path/to/app1-key.pem # 第一个应用独立的OIDC配置 OIDCRedirectURI https://app1.your-domain.com/oauth2/callback OIDCProviderMetadataURL https://your-oidc-provider/.well-known/openid-configuration OIDCClientID app-one-client-id OIDCClientSecret app-one-client-secret <Location /application_ONE.html> AuthType openid-connect Require valid-user </Location> </VirtualHost> # 第二个应用的虚拟主机 <VirtualHost *:443> ServerName app2.your-domain.com SSLEngine on SSLCertificateFile /path/to/app2-cert.pem SSLCertificateKeyFile /path/to/app2-key.pem # 第二个应用独立的OIDC配置 OIDCRedirectURI https://app2.your-domain.com/oauth2/callback OIDCProviderMetadataURL https://your-oidc-provider/.well-known/openid-configuration OIDCClientID app-two-client-id OIDCClientSecret app-two-client-secret <Location /application_TWO.html> AuthType openid-connect Require valid-user </Location> </VirtualHost>
内容的提问来源于stack exchange,提问作者CodeKid
相关产品推荐
相关产品推荐

