用户的敏捷性和oAuth

用户的敏捷性和oAuth,oauth,zend-framework2,laminas-api-tools,Oauth,Zend Framework2,Laminas Api Tools,我即将开始使用RESTAPI开发应用程序,我想使用apigility。不幸的是,这个想法有一个问题。我找不到关于如何允许oAuth对普通用户进行身份验证的可靠信息源 我需要为angular应用程序和本机移动应用程序提供访问权限(将来可能为第三方web应用程序提供访问权限)。我找到的所有资源都是关于为特定客户端应用程序授予api访问权限的,而不是为使用此应用程序的特定用户。我不想实现两种不同的身份验证方法,因此,如果有一种方法能够迅速解决这个问题,那就太好了 你对如何处理这个问题有什么建议吗?我知

我即将开始使用RESTAPI开发应用程序,我想使用apigility。不幸的是,这个想法有一个问题。我找不到关于如何允许oAuth对普通用户进行身份验证的可靠信息源

我需要为angular应用程序和本机移动应用程序提供访问权限(将来可能为第三方web应用程序提供访问权限)。我找到的所有资源都是关于为特定客户端应用程序授予api访问权限的,而不是为使用此应用程序的特定用户。我不想实现两种不同的身份验证方法,因此,如果有一种方法能够迅速解决这个问题,那就太好了


你对如何处理这个问题有什么建议吗?我知道我可以为所有注册用户生成客户端id和密码,但这是一个有点糟糕的解决方案,而且我已经有了存储用户信息的数据库模式。

您可能要查找的是“密码”授权类型。在这个场景中,您将有一种方法来注册用户及其密码,然后是一个“登录”屏幕。此登录屏幕将发送以下信息:

  • 用户名
  • 密码
  • client_id——这将是应用程序的OAuth2客户端id(不是用户id!)
  • “授权类型”:“密码”
请注意,在这种情况下,您没有提供客户机密钥!在用户凭据场景中,验证用户的凭据,然后服务器验证客户端id是否支持此授予类型

如果用户提供了成功的凭据,那么OAuth2端点将返回一个令牌、一个TTL和一个refresh_令牌(如果您在TTL过期之前发送该令牌,则会给您一组新的令牌)

从这里开始,您将在授权头中发送令牌:“Authorization:Bearer”。然后,Apigility将在每个请求中提取该标记并验证该标记

验证还返回用户名作为标识的一部分。这意味着您可以查询ZF\Mvc\Identity来检索用户,以便稍后执行特定于用户的ACL断言


如果您需要更多指导,请在邮件列表()上戳我。

密码授权类型实际上需要客户端密码。。至少根据他们的例子。此人可能需要隐式授权类型。。您可以在数据库中保留client_secret null,在api调用中保留为空。