Oauth 2.0 Apgibility OAuth2,用户和客户机之间的链接/授权代码

Oauth 2.0 Apgibility OAuth2,用户和客户机之间的链接/授权代码,oauth-2.0,zend-framework2,oauth2,laminas-api-tools,Oauth 2.0,Zend Framework2,Oauth2,Laminas Api Tools,我正在与OAuth2授权、身份验证和用户链接作斗争。 到目前为止我所做的: 我创造了一个客户,这是秘密。 所有重定向等都在工作。授权类型密码适用于自己的本机应用程序(如Android和iOS) 但对于访问令牌,user\u id是NULL,如果授权类型是授权码。 如何分配用户访问令牌或授权码? 是否有Apigility模块提供登录屏幕?我只被问到“允许”或“不允许”应用程序,但我从来没有被问到用户名和密码 更新: 问题与提供OAuth2访问第三方页面有关,例如IFTTT。他们打开了/oauth/

我正在与OAuth2授权、身份验证和用户链接作斗争。 到目前为止我所做的:

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

但对于访问令牌,
user\u id
NULL
,如果授权类型是授权码。 如何分配用户访问令牌或授权码? 是否有Apigility模块提供登录屏幕?我只被问到“允许”或“不允许”应用程序,但我从来没有被问到用户名和密码

更新:
问题与提供OAuth2访问第三方页面有关,例如IFTTT。他们打开了
/oauth/authorize
页面,在某个地方我已经引导用户登录了?!确定相关用户?是否有用于此的现有模块


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

要使用OAuth2通过用户名和密码进行身份验证,您应该使用

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

如何做

  • 将授权类型添加到客户端:
    • 在客户端表(
      oauth\u clients.grant\u types
      列)上设置
      “密码”
  • 创建一个新的身份验证适配器类型=oauth2
  • 创建一个到授权url的帖子,如下所示

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

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

  • 这些步骤的Thx。这已经起作用了,但它只适用于我正在创建的应用程序和页面。例如,如果我想提供对IFTTT的访问,我无法使用grant_类型密码。基于文档:我总是得到“允许”/“不允许”的提示,而不作为用户登录user@AlexanderLampret为什么不能使用
    grant\u type
    密码?你能详细说明一下你问题的那个方面吗?我已经更新了我的问题。我在提供服务。在我的原生Android和iOS应用程序中,我使用授权类型的密码,它可以工作。但第三方网站(如IFTTT)出于安全原因不使用这种类型。与其他页面相比,工作流是:用户是否已授权?是:显示接受/拒绝按钮。否:用户必须登录,然后将重定向到/oauth/authorize页面。那么,在apigility中是否有一种常见的方法来检查用户是否已登录,如果未登录,则重定向到登录掩码?