允许登录的WordPress用户通过OAuth访问第三方Laravel API

时间:2018-07-09 作者:Kingsley

我有一个独特的情况,如果可能的话,我希望得到一些帮助:

我的公司管理着很多WordPress网站。每个站点都有自己独特的用户集(所有站点中的用户都是相同的,但有些用户只访问X,其他用户访问Y,其他用户同时访问X和Y,等等)。我们使用一个定制的SSO插件来管理所有这些,包括权限等,这些都可以完美地工作。

我在Laravel建立了一个应用程序,它既有公共路线也有私人路线。我使用Laravel Passport/OAuth访问私人路线。前面的一切都很完美。

然而,我现在面临的情况是,我需要让WordPress用户访问我的API的一些受保护的路由,而不要求他们单独登录API。

我知道人们对WP/OAuth的兴趣基本上与我的情况相反,人们想通过OAuth服务提供商(Twitter/Google/LinkedIn/etc)登录WordPress,而不是反过来。

API和WordPress站点都位于完全不同的体系结构上,无法访问其中一个或另一个的数据库。

我要寻找的是一种让WordPress用户在我的API上“授权”自己的简单方法,无需维护两组相同的用户。理想情况下,WordPress用户不一定是在API中创建的,但我使用审计日志来跟踪谁在API中做了什么,因此能够确定谁做了什么才是最好的。

任何帮助,或类似船上的人的经验都将是伟大的!

1 个回复
SO网友:Kingsley

对于那些感兴趣的人,我的做法略有不同。

我想让我的API尽可能轻,而不是因为版本/修订版和用户而膨胀,所以最终创建了第二个Laravel实例。

在第二个Laravel实例上(consumer) 我们使用了Laravel Socialite,因为我们已经使用Google作为SSO提供商。用户登录,这是用户与我的API交互的地方。所有操作都记录在使用者上,将其保留在API DB之外。

对于consumer -> API 通信方面,我在API上安装了Laravel Passport,并使用password_client 并将密码令牌存储在consumer 在我的consumer 与我的API.

我创建了一个WordPress插件来添加链接到consumer WordPress管理菜单中的应用程序。我试图将Google的SSO/OAuth登录页面放在iFrame中,由于域不匹配,这是不可能的。

现在效果很好!我很想将大部分内容转换成WordPress插件,但我不想将我的承载/身份验证令牌存储在插件中,因为它们可以由用户编辑/查看。

结束

相关推荐

WooCommerce API Returns 401

对WooComm的rest api的工作方式感到非常困惑。我知道它应该如何工作,但无论我做什么,它都会返回401。我的用户是超级管理员,具有读/写权限。我两种都试过了:curl -k https://seekmodern.local/wp-json/wc/v2/products? consumer_key=ck_***&consumer_secret=cs_*** 以及curl -k https://seekmodern.local/wp-json/wc/v2/products