Apgigility OAuth2,User和Client / AuthorizationCode之间的链接

时间:2017-01-14 13:34:38

标签: oauth-2.0 zend-framework2 oauth2 apigility

我正在努力使用OAuth2授权,身份验证和用户链接。 到目前为止我做了什么:

我创建了一个客户端,这是秘密。 所有重定向等都在工作。授权类型密码适用于自己的原生应用(例如Android和iOS)

但是对于访问令牌,如果授权类型是授权代码,则user_idNULL。 如何指定用户访问令牌或授权代码? 是否有Apigility模块提供登录屏幕?我只被要求“允许”或“禁止”申请,但我从未被要求提供用户名和密码。

更新
问题与提供OAuth2访问第三方网页有关,例如IFTTT。他们打开/oauth/authorize页面并在某个地方指导用户登录?!确定相关用户?是否有现有模块?

第三方网站,例如出于安全原因,IFTTT不使用密码授予类型。与其他页面相比,工作流程是:用户是否经过身份验证?是:显示接受/拒绝按钮。否:用户必须登录,然后将重定向到/ oauth / authorize页面。那么在apigility中是否有一种常见的方法来检查用户是否已登录,如果没有,则重定向到登录掩码?

1 个答案:

答案 0 :(得分:1)

要使用OAuth2使用用户名和密码进行身份验证,您应该使用grant_type=password

我不确定Apigility中是否有登录屏幕。但我不认为应该拥有它,因为Apigility已经通过OAuth2允许一个或多个端点,更具体地说是OAuth2 Server Library for PHP

如何操作

  1. 将授权类型添加到客户端:
    • 在您的客户表(oauth_clients.grant_types列)上设置"password"
  2. 创建新的身份验证适配器类型= oauth2。
  3. 如下所示在认证网址上创建帖子。

    • url=localhost:8080/oauth,其中localhost:8080是运行apigility的地方,/oauth是已配置的身份验证适配器网址。
    • 有效载荷:

      {
          "username": "USERNAME",
          "password": "PASSWORD",
          "grant_type": "password",
          "client_id": "CLIENT_ID"
      }
      
  4. 登录成功后,将返回访问令牌。