Php 创建自定义OAuth2授权类型

Php 创建自定义OAuth2授权类型,php,oauth-2.0,restful-authentication,Php,Oauth 2.0,Restful Authentication,我正在为手机构建一个应用程序。授权过程需要采用以下方式。当用户未登录时,将要求他输入电话号码(如WatsApp、Viber等),在他输入电话号码后,将向用户发送一条带有8位确认码的短信。当用户输入代码时,将为其创建OAuth2访问令牌和刷新令牌,并从数据库中删除8位确认代码。如果用户注销,他需要再次执行相同的过程 我想使用密码授权方法,因为我是资源所有者。但是,由于在身份验证过程中我没有密码,我真的不知道使用哪些参数为他创建令牌。创建一个新的oauth2授权类型是否是一种好的做法?将其称为“确认

我正在为手机构建一个应用程序。授权过程需要采用以下方式。当用户未登录时,将要求他输入电话号码(如WatsApp、Viber等),在他输入电话号码后,将向用户发送一条带有8位确认码的短信。当用户输入代码时,将为其创建OAuth2访问令牌和刷新令牌,并从数据库中删除8位确认代码。如果用户注销,他需要再次执行相同的过程

我想使用密码授权方法,因为我是资源所有者。但是,由于在身份验证过程中我没有密码,我真的不知道使用哪些参数为他创建令牌。创建一个新的oauth2授权类型是否是一种好的做法?将其称为“确认码”,其参数将是客户端id、客户端密码、用户名和确认码?

根据上的规范使用oauth2.0“资源所有者密码授权”。您的用户id是电话号码,密码是您发送给他们的8位确认码

注册电话号码的呼叫将导致发送SMS,显然不应进行身份验证

或者,使用普通的“授权码授权”。在登录页面上,引导用户完成所需的步骤。首先询问电话号码并发送短信。然后询问确认码。这可能有一些安全优势。上述方法的主要区别在于(部分)UI由授权服务器作为HTML提供,而通过授予密码凭据,所有UI由应用程序(OAuth客户端)提供


请注意,在授权服务器提供的页面上,可以启用多个身份验证方法。例如,您可以提供输入普通密码的功能,并且仅在未输入密码时发送SMS。由于这是一个普通的web应用程序,您基本上可以自由地在web应用程序中执行任何可能的操作。授权授予仅在授权服务器重定向回客户端应用程序时完成。

我应该提到这样做的问题(我已经想到了)。这有一个小问题。我还有一个接受密码的web界面。由于大多数操作都是通过电话进行的,所有用户名都是电话号码,但是有些用户名可能缺少密码,如果用户打开web界面使用密码,则会发送另一条短信,要求对电话号码进行“密码重置”,一旦用户输入密码,他将能够创建新密码并通过web界面登录。@Gasim也许我遗漏了什么,但我不认为这是个问题。你能解释一下吗?我的意思是,一个人可以有一个单独的密码,他可以在网络界面上使用,但是当使用电话时。。。因此,确认码和密码授权将重叠。创建自定义授权方法实际上可以吗?安全性方面也是一样的,因为除了读取代码和读取密码之外,它使用的所有方法都是相同的——不同的表。我的问题是关于一般遵循标准。。。标准是否允许自定义授予类型?标准是标准,而不是法律。没有人会因为你越轨而把你关进监狱。话虽如此,人们可能会因此而憎恨你。此外,标准之所以如此也是有原因的。当您偏离时,请确保它是安全的。如果我正确理解您的问题,您的问题是可能有人使用密码或8位确认码调用资源所有者密码凭据授予令牌终结点。为什么不检查两者,如果其中一个是正确的,就发出一个令牌呢?