AWS Cognito OIDC 提供商 PKCE

时间:2021-07-14 11:25:31

标签: amazon-cognito openid-connect pkce

我有一个使用 Cognito 进行身份验证的 Amplify 应用程序。我需要允许用户通过第三方登录。我已将它们设置为 Cognito 中的 OIDC 身份提供商。但是,该第三方仅支持使用 PKCE 的代码授予流程,并且 Cognito 向 OIDC 提供商发出的请求不是使用 PKCE 发出的(没有发送 code_challenge 参数)。

查看 OIDC 提供商和 Cognito 应用客户端的设置,我找不到启用此功能的方法。是否可以让 Cognito 通过 PKCE 提出此请求?

1 个答案:

答案 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 部分。