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