我有一个 Amplify 应用程序,它使用 Cognito 进行身份验证。我需要允许用户通过第三方登录。我已将它们设置为 Cognito 中的 OIDC 身份提供商。但是,该第三方仅支持使用 PKCE 的代码授予流程,并且 Cognito 向 OIDC 提供商发出的请求不是使用 PKCE 发出的(不发送 code_challenge 参数)。
查看 OIDC 提供商和 Cognito 应用程序客户端的设置,我无法找到启用此功能的方法。 Cognito 是否可以通过 PKCE 提出此请求?
不幸的是,我很确定事实并非如此:
Cognito 支持 PKCE 来处理来自客户的直接请求
但我认为它不适用于与其他身份提供商的联合连接
从逻辑上讲,这应该通过以下方式之一起作用:
Cognito 可以将其作为设置提供,您可以切换身份提供商
或者 Cognito 可以从 code_challenge_methods_supported 元数据参数
派生它目标 IDP 可能应该支持没有 PKCE 的经典 OIDC 消息,以便成为合规的 OIDC 提供商 - 这可能是您最好的选择
我不久前使用 Okta 作为 Cognito 的 IDP - Okta 返回上述元数据字段 - 但 Cognito 没有使用 PKCE。