禁用授权隐式流是否符合OIDC标准?动态OpenID Provider相关疑问
关于OpenID Provider动态模式与响应类型规范的疑问解答
问题背景
我打算禁用隐式流(当前已不推荐使用该流),这意味着不再支持id_token和id_token token响应类型。但根据OpenID连接发现端点的规范:
response_types_supported:必填项。包含此OP支持的OAuth 2.0 response_type值的JSON数组。动态OpenID提供者必须支持code、id_token和id_token token响应类型值。
我有两个疑问:
- 什么是动态OpenID Provider?
- 不在发现端点声明
id_token和id_token token是否违规?
解答
1. 什么是动态OpenID Provider?
- 动态OpenID Provider(简称动态OP)是指支持OpenID Connect动态客户端注册协议的身份提供者。核心特征是:
- 提供标准化的发现端点(通常是
/.well-known/openid-configuration),暴露自身的元数据(如支持的响应类型、端点地址等),让客户端可以自动获取这些信息,无需手动配置。 - 允许客户端通过API请求完成自动注册,程序化获取客户端ID、密钥等凭证,无需人工审核或手动创建。
- 提供标准化的发现端点(通常是
- 与之相对的是静态OpenID Provider:客户端必须手动配置OP的所有关键参数(如授权端点、令牌端点地址),且不支持自动注册流程。
2. 不声明id_token和id_token token是否违规?
这取决于你的OP属于动态还是静态模式:
- 如果是动态OP:根据OpenID Connect发现规范的强制要求,必须支持
code、id_token、id_token token这三种响应类型,不声明就属于违规。这一要求是为了兼容仍依赖隐式流的旧客户端。 - 如果是静态OP:规范没有强制要求支持这些响应类型,你完全可以只在
response_types_supported中声明实际支持的类型(比如仅code),只要客户端是通过手动配置适配你的服务能力,就不存在合规问题。 - 补充建议:如果你的服务仅面向新开发的客户端(均使用授权码流+PKCE,不再依赖隐式流),可以考虑切换为静态OP模式,这样就能合法禁用隐式流相关的响应类型,同时规避动态OP的强制规范限制。
内容的提问来源于stack exchange,提问作者jazzman
相关产品推荐
相关产品推荐

