根据 https://oauth.net/2/grant-types/implicit/,现在的应用程序不再建议使用隐式流程。因此,我打算禁用它。
根据 https://openid.net/specs/openid-connect-core-1_0.html#Authentication,这意味着我不会支持
id_token
和 id_token token
响应类型。
但是,对于发现端点,根据 https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata,
response_types_supported:必需。 JSON 数组,包含此 OP 支持的 OAuth 2.0 response_type 值列表。 动态 OpenID 提供商必须支持代码、id_token 和 id_token 令牌响应类型值。
现在我很困惑。什么是动态 OpenID 提供商?在发现端点上不通告
id_token
和 id_token token
是错误的吗?
基础知识
在 OpenID 元数据中包含类似
code id_token
的流不会造成任何损害。重要的是您的客户使用什么。
如果您愿意,请禁用
token
和 id_token
。然后,您将遵循最新的 FAPI 2.0 安全建议,其中建议仅使用 response_type=code
。
这可以避免在前端通道上接收令牌。如果这些令牌是 JWT,那么对于 ID 令牌,它们可能会导致浏览器历史记录或服务器日志中的个人数据泄露,因为 JWT 很容易读取。
高级
动态 OpenID 提供程序实现了OIDC 规范第 15.2 节中的一些额外功能。这用于动态业务场景。
一个例子可能是提供开放银行功能的银行,商家可以使用动态客户注册和银行机构颁发的客户证书进行连接。
为了向后兼容,动态 OpenID 提供商可能需要支持使用
response_type=code id_token
。这是 FAPI 1.0 选项之一,尽管它也需要加密的 ID 令牌来防止我上面提到的信息泄露类型。