用户的敏捷性和 oAuth

问题描述 投票:0回答:1

我即将开始使用 REST API 开发应用程序,并且我想使用敏捷性。不幸的是,这个想法有一个问题。我找不到可靠的信息来源如何允许普通用户通过 oAuth 进行身份验证。

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

您对如何解决这个问题有什么建议吗?我知道我可以为所有注册用户生成客户端 ID 和密码,但这似乎是一个有点蹩脚的解决方案,而且我已经有数据库架构用于存储用户信息。

oauth zend-framework2 laminas-api-tools
1个回答
8
投票

您可能正在寻找的是“密码”授予类型。在这种情况下,您将有一种注册用户及其密码的方法,然后是一个“登录”屏幕。此登录屏幕将发送以下信息:

  • 用户名
  • 密码
  • client_id——这将是应用程序的 OAuth2 客户端 ID(不是用户 ID!)
  • “grant_type”:“密码”

请注意,在这种情况下您没有提供 client_secret!在用户凭据场景中,将验证用户的凭据,然后服务器验证 client_id 是否支持此授予类型。

如果用户提供成功的凭据,则 OAuth2 端点将返回一个令牌、一个 TTL 和一个刷新令牌(如果您在 TTL 过期之前发送它,将为您提供一组新的令牌)。

从这里,您将在授权标头中发送令牌:“Authorization:Bearer”。然后 Apigility 将在每个请求中获取此信息并验证令牌。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.