Google Identity OIDC合规性疑问及多IDP兼容服务方案咨询
我们的总体目标是在资源服务器(1)上支持来自多个可配置身份提供商的access_token,采用RFC 9068格式,通过该格式可获取issuer,进而使用.well-known端点完成授权。
例如,租户A可在我们的资源服务器上注册devAxxx.auth0.com、internal.oauth.tenantA.com这两个身份提供商。为了进行令牌introspect或请求用户信息,必须先解析issuer,而如果请求以RFC9068格式的令牌发送至资源服务器,这一操作即可实现。
在此基础上,我们可提供类似Auth0的服务(2),作为与任意OIDC提供商的中间层,对RFC9068 access_token进行签名以封装不透明access_token,从而与资源服务器(1)兼容。
OIDC规范规定,userinfo端点必须使用支持RFC6750第2节的bearer令牌。
Google OIDC文档表明其已获得OIDC认证,但向userinfo端点发送的请求仅接受RFC6750第2.3节的格式,不支持2.1节的格式。
OIDC规范仅推荐使用2.1节的方式,而RFC6750第2.1节要求资源服务器必须接受该方式,这让我难以解读:
来自OIDC规范的内容:
客户端需通过HTTP GET或POST方法发送UserInfo请求。从OpenID Connect认证请求获取的Access Token必须按照OAuth 2.0 Bearer令牌使用规范[RFC6750]第2节的要求,以Bearer Token形式发送。
建议请求使用HTTP GET方法,并通过Authorization头字段发送Access Token。
这些是对请求的要求,而非对授权服务器应接受方式的要求?
来自RFC6750的内容:
客户端应使用带有"Bearer" HTTP授权方案的"Authorization"请求头字段,携带bearer令牌发起认证请求。资源服务器必须支持该方式。
尽管我注意到Google的userinfo端点显然属于认证服务器而非资源服务器,但我理解为:客户端访问userinfo时推荐使用该方式,而实现userinfo的认证服务器是否必须支持?
或许Google并未专门获得"动态提供商"认证?
针对服务(2),解决方案之一是为身份提供商实体添加支持的认证方法配置;是否存在无需配置的解决方案?
内容的提问来源于stack exchange,提问作者Dave Higgins

