0

我想实现 oAuth2.0,但在阅读了 oAuth 2.0 之后,我的理解是它应该使用授权码授权类型并且还应该使用 PKCE。我正在使用 passportJs 来实现 oAuth2.0,但同时,我不想要任何安全漏洞的安全问题。我知道 passportJs 使用默认的授权码授权流程。但我也想用它来实现 PKCE。护照在他们的文件中提到enableProof: true。这是否启用 PKCE?

4

1 回答 1

0

enableProof 与 PKCE 无关。PKCE 是执行 oAuth 身份验证时使用的安全措施。oAuth 身份验证会产生访问令牌。您使用该访问令牌来执行 API 请求。EnableProof 打开 appsecret_proof,这是另一种安全措施,您获得访问令牌后使用,以使某人无法仅使用访问令牌代表您进行 API 调用。当 enableProof 设置为 True 时,appsecret_proof 参数将添加到每个 API 调用中。

由于访问令牌是可移植的,因此可以从客户端窃取令牌并代表该客户端进行调用。访问令牌也可能被个人计算机上的恶意软件或中间人攻击窃取。

您可以通过将 appsecret_proof 参数添加到来自服务器的每个 API 调用并启用该设置以要求对所有调用进行证明来防止这种情况。应用程序秘密证明是您的访问令牌的 sha256 哈希,使用应用程序秘密作为密钥。如果您将 enableProof 设置为 true,所有这些都由 PassportJs 处理。

PassportJs 本机 oauth2 包也支持 pkce选项pkce设置为 True。如果您使用 passport-facebook 包,这取决于本机包,您也可以使用该设置。因此,只需将其添加到您的配置中:

state: true,
pkce: true

你应该是金色的。您甚至可以enableProof: true在身份验证后添加额外的安全性。

于 2020-07-02T13:29:28.593 回答