实施对组织OAuth服务器的身份验证

时间:2016-08-16 作者:Shahroq

抱歉,如果这个问题的某些部分看起来很明显,我是WordPress的新手,这是我第一次手动进入oAuth工作流(没有使用社交登录插件)。

有一个oAuth2服务器,它为组织的所有站点/应用程序(让我们称之为X-Org)提供中央授权。我想做的是允许我的Woocommerce客户通过X-Org服务器登录/注册,然后返回Woo进行结账。作为一种程序,我的想法是:

用户点击“登录/注册X-Org”按钮,返回“授权码”,获取代码并与访问/刷新令牌交换,我的WordPress使用“访问令牌”获取配置文件信息(电子邮件、名字/姓氏)

  • 检查wp_users 桌子如果否,则创建用户然后登录用户(wp\\u signon)
  • 此外,我应该将返回的“刷新令牌”保存到数据库中(作为用户名?)其余将由WordPress auth系统处理。调用wp\\u signon后(基于cookie,对吗?)

    首先,我上面列出的是正确的路径?而且合乎逻辑?

    对于1,2,我正在考虑使用PHP cURL lib。通过Wordpress核心API还有其他选择吗?

    C-我不确定是否应该在db中保存刷新/访问令牌?

  • 1 个回复
    SO网友:Prashant Walke

    使用JWT,您可以使用JSON Web令牌身份验证作为身份验证方法来扩展WP REST API。

    WordPress REST API Authentication:Default cookie authentication : cookie身份验证是WordPress中本机可用的唯一身份验证机制。

    Remote applications :

    为了支持远程应用程序,我们需要使用插件添加一个新的REST API身份验证方法。

    当前支持的选项有Basic Auth、OAuth和JWT:

    带有用户名和密码的基本身份验证被认为是不安全的,只能在开发场景中使用

    OAuth很好,但验证可能会很痛苦

    JWT非常棒,可以与前端框架配合使用

    用户登录([用户名/密码])=>身份验证服务器=>用户身份验证,创建JWT并返回给用户

    用户(用户在进行API调用时通过[JWT])=>应用程序服务器=>应用程序验证和处理API调用=>向用户发送数据/消息

    enter image description here用户首先使用身份验证服务器的登录系统(例如用户名和密码、Facebook登录、Google登录、Twitter等)登录到身份验证服务器。然后,身份验证服务器创建JWT并将其发送给用户。当用户对应用程序进行API调用时,用户将JWT与API调用一起传递。在此设置中,应用程序服务器将被配置为验证传入的JWT是否由身份验证服务器创建

    当用户使用附加的JWT进行API调用时,应用程序可以使用JWT来验证API调用是否来自经过身份验证的用户。

    身份验证插件:将从远程应用程序进行身份验证。

    Some plugins for Authentication:

    OAuth 1.0a Server : 将应用程序连接到WordPress站点,而无需提供密码。

    此插件仅支持WordPress>=4.4。

    Application Passwords : – 在不直接提供用户密码的情况下对用户进行身份验证,而是使用其用户名的base64编码字符串和新的应用程序密码。

    JSON Web Tokens – 使用JSON Web令牌身份验证作为身份验证方法扩展WP REST API。

    WP User : 使用JSON Web令牌(JWT)身份验证作为身份验证方法扩展WP REST API。

    WP用户插件可帮助您在网站上创建前端登录和注册表单,并帮助您为WP REST API创建JWT令牌,以及其他安全限制登录尝试、密码正则表达式、黑名单/白名单IP地址等功能。

    用户登录或注册,并希望避免正常的WordPress登录页面,该插件添加了放置登录、注册、忘记密码的功能,在AJAX中效果平滑,并支持REST API。