oauth - 用户的 Apigility 和 oAuth

标签 oauth zend-framework2 laminas-api-tools

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

我需要提供对 angular 应用程序和 native 移动应用程序的访问(将来可能会用于第三方 Web 应用程序)。我发现的所有资源都是关于授予特定客户端应用程序的 api 访问权限,而不是授予使用此应用程序的特定用户的访问权限。我不想实现两种不同的身份验证方法,因此如果有一种方法可以通过 apigility 解决此问题,那就太好了。

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

最佳答案

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

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

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

    如果用户提供了成功的凭据,那么 OAuth2 端点将返回一个 token 、一个 TTL 和一个 refresh_token(如果您在 TTL 到期之前发送它,则会为您提供一组新的 token )。

    从这里开始,您将在 Authorization header 中发送 token :“Authorization: Bearer”。然后,Apigility 将在每个请求中选择它并验证 token 。

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

    如果您需要更多指导,请在邮件列表 ( http://bit.ly/apigility-users ) 上戳我。

    关于oauth - 用户的 Apigility 和 oAuth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23768389/

    相关文章:

    go - 我可以为另一个域指定和设置 http-only cookie 吗?

    twitter - oauth(对于 twitter/或一般情况)通过 http 安全吗

    php - ZF2 select 中的别名 - 带有计算字段

    php - 服务器端 Twitter 客户端可以使用 OAUTH 吗?

    php - 如何在 zend 框架 2 中创建工厂?

    php - Zend Framework 2 SOAP 自动发现和复杂类型

    php - 在 Apigility Resource 中获取当前用户信息

    php - 在映射器中注入(inject)数据库适配器

    php - 无法处理实体但使用 Apigility 在 Doctrine 中成功删除

    laravel - 如何在 Laravel 5.3 中修改来自 Passport OAuth 的错误消息?