You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否不修改非兼容OAuth2授权服务器,使用mod_auth_openidc集成遗留PHP应用?

解决mod_auth_openidc适配纯OAuth2授权服务器的问题

针对你的场景,不需要修改授权服务器,只需调整mod_auth_openidc的配置,让它以纯OAuth2客户端模式工作,跳过OpenID Connect特有的id_token和openid scope检查,具体方案如下:

关键配置调整

在现有配置基础上,添加/修改以下参数:

  1. 添加令牌端点配置
    授权码流程需要用code交换access token,必须指定授权服务器的令牌端点:

    OIDCProviderTokenEndpoint https://myauthserver/oauth/token
    
  2. 启用纯OAuth2模式
    通过OIDCUseNonOpenIDConnect参数禁用OpenID Connect的强制检查,让模块仅处理OAuth2流程:

    OIDCUseNonOpenIDConnect On
    
  3. 确保scope不包含openid
    你的现有配置OIDCScope "all"已经符合要求,模块启用纯OAuth2模式后,不会自动向scope中追加openid,避免触发授权服务器的不支持错误。

修改后的完整配置

OIDCProviderJwksUri https://myauthserver/.well-known/jwks.json
OIDCProviderAuthorizationEndpoint https://myauthserver/oauth/authorize
OIDCProviderTokenEndpoint https://myauthserver/oauth/token
OIDCClientID myclientId
OIDCClientSecret 12345
OIDCScope "all"
OIDCResponseType "code"
OIDCRedirectURI /protected
OIDCCryptoPassphrase SOMEPASSPHRASE
OIDCUseNonOpenIDConnect On

效果说明

  • 配置生效后,mod_auth_openidc会跳过对id_token的校验,也不再要求授权服务器支持openid scope
  • 回调时模块会自动用拿到的authorization code交换access token,你可以在PHP应用中通过环境变量$_SERVER['OIDC_access_token']获取到该令牌,后续自行处理认证逻辑
  • 如果需要获取用户信息,可额外添加OIDCProviderUserInfoEndpoint配置授权服务器的用户信息端点,模块会自动拉取用户信息并存入环境变量

内容的提问来源于stack exchange,提问作者marcellorvalle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 16:53:25