Php 对于非SSL网站,是OAuth1还是OAuth2?

Php 对于非SSL网站,是OAuth1还是OAuth2?,php,codeigniter,ssl,oauth,oauth-2.0,Php,Codeigniter,Ssl,Oauth,Oauth 2.0,我想在我的PHP服务器上实现OAuth服务器,它有一个SSL连接。目前还没有适合PHP codeigniter的OAuth 2框架。那么我应该使用OAuth1还是OAuth2呢?从客户机的角度来看,OAuth 2更容易集成到应用程序中,还有其他好处: 只需将任何外部Oauth2库与Codeigniter集成即可。这里有一个:我使用OAuth2已经两年了,我强烈推荐使用它,因为它非常可靠。 关于SSL,据我所知,OAUTH应该利用SSL来实现适当的实现,避免这将不采用OAuthTrase.U/P>

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

从客户机的角度来看,OAuth 2更容易集成到应用程序中,还有其他好处:


只需将任何外部Oauth2库与Codeigniter集成即可。这里有一个:

我使用OAuth2已经两年了,我强烈推荐使用它,因为它非常可靠。
关于SSL,据我所知,OAUTH应该利用SSL来实现适当的实现,避免这将不采用OAuthTrase.U/P> < P>简短的答案是:您应该考虑使用OAuth1.0a(1)而不是OAuth2 2 /P> 答案如下:

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

3.1(授权端点)

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

3.2(令牌端点)

“[…]当向令牌端点发送请求时,授权服务器必须要求使用第1.6节所述的TLS。”

在您的情况下,当您没有SSL连接时,仍然可以使用< AUTH 2和MAC访问认证[3 ]来考虑<强> >可能> /强>,它指定如何通过发出MAC类型访问令牌来创建OAuth2请求。此类令牌使用共享对称密钥进行加密签名(密钥在客户端应用程序和服务器之间共享)

重要注意事项:但是,在这种设置中,您仍然需要为客户端提供一种机制,以便能够以安全的方式与OAuth 2.0服务器建立共享机密(如何做到这一点取决于您自己-可以通过某些SSL通道或带外,具体取决于您的使用情况)。这是允许客户端安全访问受保护资源的严格要求

“MAC方案要求建立共享对称密钥 在客户端和服务器之间。此规范提供 用于使用向客户端发出一组MAC凭据的这种方法 OAuth 2.0,采用MAC类型访问令牌的形式

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

基于以上解释,我将考虑使用OAuth1.0a(3),它不需要使用传输级安全性来在客户端和授权服务器之间通信(OAuth1.0a使用术语“服务提供者”,BTW)。相反,它依赖于使用共享对称密钥(或RSA密钥)对消息进行签名。然而。请注意,除非您使用HMAC-SHA1或RSA-SHA1签名(即您决定使用纯文本签名类型),否则您仍然需要使用SSL/TLS

[1]

[2]


[3]

客户端应用程序怎么样。需要有SSL连接,或者只需要资源和授权服务器就足够了?