Laravel 5.5-Laravel Passport使用的授权类型是否正确?

Laravel 5.5-Laravel Passport使用的授权类型是否正确?,laravel,api,authentication,oauth-2.0,laravel-passport,Laravel,Api,Authentication,Oauth 2.0,Laravel Passport,我有一个应用程序,用户可以通过网站正常注册并发布职位空缺 我希望注册用户能够通过第三方多职位发布应用程序使用我的api发布职位空缺,即在第三方网站注册的用户,他们将收到一份表格,该表格将发布到我网站上的api端点 现在我的问题是如何使用Laravel Passport实现这一点 以下各项是否正确: 我是否为第三方应用程序创建passport客户端 向第三方应用程序提供其客户端id和客户端机密 当用户在第三方网站上提交表单时,他们将包括用户名(电子邮件)和密码以及表单的其余数据 第三方应用程序使用

我有一个应用程序,用户可以通过网站正常注册并发布职位空缺

我希望注册用户能够通过第三方多职位发布应用程序使用我的api发布职位空缺,即在第三方网站注册的用户,他们将收到一份表格,该表格将发布到我网站上的api端点

现在我的问题是如何使用Laravel Passport实现这一点

以下各项是否正确:

  • 我是否为第三方应用程序创建passport客户端

  • 向第三方应用程序提供其客户端id和客户端机密

  • 当用户在第三方网站上提交表单时,他们将包括用户名(电子邮件)和密码以及表单的其余数据

  • 第三方应用程序使用password grant方法向()发出请求,以使用其客户端id、客户端机密、用户电子邮件和密码请求访问令牌

  • 如果返回了有效的访问令牌,则使用该令牌和表单数据向()端点发出第二个请求

  • 是否有人建议这是正确的授权类型,或者注册用户为了获取访问令牌而提供第三方应用程序登录凭据是否不安全

    对于上述用例,正确的授权类型是什么

    如果我使用授权授予方法,谁将负责创建客户端-my-app.com的管理员或my-app.com的注册用户

    如果是my-app.com的注册用户,那么这是否意味着每个注册用户都必须在my-app.com上为同一个第三方应用程序创建一个客户端,这没有意义,因为第三方应用程序最终会有多个客户端ID,那么他们将如何实现回调url


    这是非常令人困惑的。

    除了第3点,你或多或少都在正轨上

    允许您的用户通过第三方系统访问凭据不是一个好主意,甚至在法律上也不可接受。 而是提供一个url,该url可以在弹出窗口中打开以进行身份验证,并将身份验证令牌返回到window.opener

    您可以为父窗口(window.opener)提供一个函数,该函数接受登录成功/错误时调用的回调:

    var popup = window.open("/someUrl");
    popup.onload = function(){
       popup.onLogin(onLoginSuccessCallback, onLoginErrorCallback);
    };
    
    或者父窗口可以有一个功能,您可以从弹出窗口中调用该功能:

    window.opener.loginCallback(token);
    

    因此,基本上你是说用户应该使用我自己的应用程序中的表单进行身份验证,该表单将返回一个访问令牌。我以前从未遇到过这样的身份验证api?这种方法对最终用户来说似乎不是天衣无缝的。是的,这并不理想,但这就是使用Facebook、Google帐户等登录的实现方式。我认为大多数用户将习惯于这种身份验证。这是否与使用授权授予方法相同:我可能误解了您的情况,但从您的描述来看,您希望允许在系统中注册的用户通过第三方api客户端进行身份验证。如果这是正确的,您建议的方法将向第三方公开他们的凭据,这在大多数情况下是不可接受的。如果一个实体同时拥有API和客户机,这不会是一个问题。是的,这是正确的。我希望能够通过使用我的api的第三方系统对在我的系统中注册的用户进行身份验证。例如,用户已在我的系统上注册。然后他们在使用我的api的第三方系统上注册。从第三方系统,我需要能够验证用户张贴到我的系统。我只能想到密码授权的方法来实现这一点,但正如您所说,这会将用户密码暴露给第三方。我不太理解授权授予方法,我怀疑它是否适合我的用例。还有其他想法吗?