gpt4 book ai didi

php - 非 SSL 网站的 OAuth1 或 OAuth2?

转载 作者:太空宇宙 更新时间:2023-11-03 12:55:57 25 4
gpt4 key购买 nike

我想在没有 SSL 连接的 PHP 服务器上实现 OAuth 服务器。目前还没有适合 PHP-codeigniter 的 OAuth 2 框架。那么我应该使用 OAuth1 和 OAuth2 中的哪一个?

最佳答案

简短的回答是:您应该考虑使用 OAuth 1.0a [1] 而不是 OAuth 2.0

长答案如下:

默认情况下,OAuth 2.0 需要使用 SSL/TLS 来实现传输层安全。因此,在实现符合 OAuth 2.0 的授权服务器时,您需要允许客户端应用程序通过安全通道连接到授权端点和 token 端点。请参阅 OAuth 2.0 规范 [2] 中的以下部分:

3.1(授权端点)

[...] 授权服务器在向授权端点发送请求时必须要求使用第 1.6 节中所述的 TLS。”

3.2( token 端点)

[...] 授权服务器在向 token 端点发送请求时必须要求使用第 1.6 节中所述的 TLS。”

在您的情况下,当您没有 SSL 连接时,您仍然可以可能考虑使用 OAuth 2.0 和 MAC 访问身份验证 [3],它指定如何通过发出 OAuth 2.0 请求MAC 类型的访问 token 。此类 token 使用共享对称 key 进行加密签名( key 在客户端应用程序和服务器之间共享)。

重要说明:但是,在这样的设置中,您仍然需要为客户端提供一种机制,以便能够以安全的方式与您的 OAuth 2.0 服务器建立共享 secret (这是完成由您决定 - 可以通过某些 SSL channel 或带外,具体取决于您的具体用例)。这是允许客户端安全访问 protected 资源的严格要求!

"MAC方案需要建立共享对称 key 客户端和服务器之间。该规范提供了一个这种向客户端发出一组 MAC 凭据的方法使用MAC 类型访问 token 形式的 OAuth 2.0。

该机制的主要设计目标是简化和改进不愿意或不能的服务的 HTTP 认证为每个请求使用 TLS。特别是,这种机制杠杆初始 TLS 设置阶段,以在客户端和服务器。然后使用共享 secret 提供针对被动网络的保护的不安全通道攻击者。”

基于上述解释,我会考虑使用 OAuth 1.0a [3],它不需要在客户端和授权服务器之间使用传输级安全通信(OAuth 1.0a 使用术语“服务提供者” “, 顺便提一句)。相反,它依赖于使用共享对称 key (或 RSA key )对消息进行签名。然而。请注意,除非您使用 HMAC-SHA1 或 RSA-SHA1 签名(即您决定使用 PlAINTEXT 签名类型),否则您无论如何都需要使用 SSL/TLS。

[1] https://www.rfc-editor.org/rfc/rfc5849

[2] https://www.rfc-editor.org/rfc/rfc6749

[3] https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-http-mac-01

关于php - 非 SSL 网站的 OAuth1 或 OAuth2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14626591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com