管理api
构建应用程序
快速启动
指南
教程
建立渠道
快速启动
指南
教程
建筑店面
管理货币
指南
合作伙伴信息
成为合作伙伴
开始
POS解决方案
ERP解决方案
PIM解决方案
OMS的解决方案
营销解决方案
运输解决方案
支付解决方案

客户登录API

介绍

在本教程中,您将学习如何使用客户登录API和JSON Web令牌为店面客户启用单点登录。

概述

单点登录(SSO)是一种身份验证机制,它允许用户使用用户只输入一次的同一凭证集登录到多个软件应用程序。它消除了维护多个密码的需要,从而简化了访问web应用程序的过程。更多细节,请参见单点登录

当用户登录到您的web应用程序时,您可以使用客户登录API通过SSO验证该用户到BigCommerce商店的身份。

您可以在以下用例中使用客户登录API:

  • 与SSO提供者或身份提供者(IdP)集成
  • 在BigCommerce商店和另一个应用程序之间设置连续登录
  • 启用其他登入方法(例如电话号码和短讯密码)

店面客户使用访问点URL登录/登录/令牌/{牌}。的{牌}必须是一个JSON Web令牌(JWT),其中包含由应用程序的OAuth客户端秘密签名的客户登录请求的参数。有关OAuth协议的更多信息,请参见OAuth

智威汤逊是行业标准(RFC 7519)在双方之间安全地传送资料。JWT表示为base64url编码的片段序列,这些片段由点()。这些部分包括头部、有效负载和签名。更多细节,请参见JSON Web令牌简介

有效载荷字段引用

字段名 类型 描述
国际空间站 字符串 表示令牌的颁发者。这是应用程序的客户端ID。
iat 整数 生成令牌的时间。事件发生后的秒数Unix新纪元
jti 字符串 一个唯一的请求ID(例如uuid)。
操作 字符串 必须包含字符串“customer_login”
store_hash 字符串 存储哈希标识您要登录的存储。
customer_id 整数 您正在登录的客户的ID。
redirect_to 字符串 可选字段,包含登录后购物者目的地的相对路径。将默认为/ account.php
request_ip 字符串 可选字段,包含请求的预期IP地址。如果提供,BigCommerce将检查它是否与试图登录的浏览器匹配。

先决条件

要使用客户登录API启用单点登录,您需要以下设施:

  • BigCommerce商店
  • API客户端ID和客户端秘密,并将OAuth范围设置为客户登录
  • node . js如果您计划使用JavaScript,则安装在您的机器上

如果不知道客户端ID和客户端机密,请按照中概述的步骤获取凭据创建API帐户

确保将客户登录范围设置为Login。

例子OAuth范围

启用单点登录

要使用customer Login API将客户登录到他们的storefront帐户,你的应用程序需要将客户的浏览器重定向到以下访问点URL:https://storedomain.com/login/token/{牌}

{牌}参数是包含由应用程序的OAuth客户端秘密签名的有效负载数据的JWT。

我们建议编写一个脚本来生成JTW的登录令牌iat(在)索赔仅在30秒内有效。BigCommerce提供了用于生成登录令牌的helper方法API客户端库

本教程的开始重点关注使用调试器工具at手动创建令牌JWT.io。然后,我们将探索如何使用JavaScript函数以编程方式生成一个访问点URL。

使用调试器工具创建JWT

要创建JWT,您需要获取一个customer_id使用客户v3 API

  1. 发送一个得到请求得到所有客户端点。选择一个顾客,并记下customer_id
{“accepts_product_review_abandoned_cart_emails”:真正的,“身份验证”:{“force_password_reset”:},“公司”:“BigCommerce”,“customer_group_id”:2,“date_created”:“2020 - 02 - 06 - t17:46:33z”,“date_modified”:“2020 - 02 - 07 - t19:58:03z”,“电子邮件”:“customer.com”,“first_name”:“简”,“id”:1,# customer_id“last_name”:“母鹿”,“笔记”:”“,“电话”:”“,“registration_ip_address”:”“,“tax_exempt_category”:“D”}
  1. 打开调试器JWT.io

  2. 在“HEADER”字段中,确保JWTalg(算法)字段设置为“HS256”typ(令牌类型)字段设置为“JWT”

JWT头

  1. 在“PAYLOAD: DATA”字段中,创建一个负载。

JWT载荷

  1. 在“验证签名”字段中,将“your-256-bit- Secret”替换为您的客户端秘密。

JWT签名

  1. 从已编码的框中复制登录令牌,并将其粘贴到接入点URL中,替换{牌}参数。
    例子:
https:/ / storedomain.com/login/token/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ7Y2xpZW50X2lkfSIsImlhdCI6MTUzNTM5MzExMywianRpIjoie3V1aWR9Iiwib3BlcmF0aW9uIjoiY3VzdG9tZXJfbG9naW4iLCJzdG9yZV9oYXNoIjoie3N0b3JlX2hhc2h9IiwiY3VzdG9tZXJfaWQiOjJ9.J-fAtbjRFGdLsT744DhoprFEDqIfVq72HbDzrbFy6Is
  1. 将URL粘贴到web浏览器的地址栏中。

如果请求成功,您将作为客户登录并被定向到/ account.php。如果不成功,将显示一个登录尝试错误消息,并将引导到/ login。

登录错误

登录失败的常见原因请参见故障排除

使用JavaScript函数创建JWT

在本教程的这一部分中,我们将带领您使用JavaScript创建一个访问点URL。您将需要node . js安装在您的机器上,以完成此部分。

  1. 在终端中运行以下命令创建并打开一个新文件夹:
美元mkdirurlGenerator美元cdurlGenerator
  1. 使用以下命令创建一个新的节点项目:
美元npm初始化
  1. 安装jsonwebtokenuuidnpm包:
美元npm安装jsonwebtoken uuid
  1. 打开urlGenerator文件夹,并创建一个新的JS文件。

  2. 将以下代码粘贴到新的JS文件中:

常量jwt=需要(“jsonwebtoken”);常量{v4:uuidv4}=需要(“uuid”);函数getLoginUrl(customerId,storeHash,storeUrl,clientId,clientSecret){常量dateCreated=数学((日期())取得时间()/1000);常量有效载荷={“国际空间站”:clientId,“iat”:dateCreated,“jti”:uuidv4(),“操作”:“customer_login”,“store_hash”:storeHash,“customer_id”:customerId,}令牌=jwt标志(有效载荷,clientSecret,{算法:“HS256”});返回$ {storeUrl}/ /登录/令牌$ {令牌};};常量clientId=“你的客户机id”;常量clientSecret=“你的客户秘密”;常量customerId=“你的客户id”;常量storeHash=“你的店哈希”;常量storeUrl=“你的商店网址”;常量loginUrl=getLoginUrl(customerId,storeHash,storeUrl,clientId,clientSecret);控制台日志(loginUrl);
  1. 在变量中替换你的应用程序和特定于客户的值。

  2. 运行代码:

节点youFileName.js美元

您应该收到一个完整的访问点URL作为输出。

  1. 复制URL并粘贴到浏览器的地址栏。

如果请求成功,您将作为客户登录并被定向到/ account.php。如果不成功,您将收到一条登录尝试错误消息,并被定向到/ login。。登录失败的常见原因请参见故障排除

示例代码

我们提供了用于生成登录令牌的辅助方法API客户端库。关于特定语言的示例,请参阅下面的BigCommerce存储库:

有关其他语言的客户端库,请参见用于令牌签名/验证的库

注销

要注销客户,设置redirect_toJWT的有效载荷范围/ login吗?action =注销

故障排除

  • 如果生成“iat”声明的服务器的时钟没有同步,时间戳将不同步,请求将失败。如果您的系统时间与BigCommerce服务器时间不一致,您可以使用获取系统时间戳终点是真理的源泉。
  • 您只能访问访问点URL一次。后,令牌将失效得到请求。
  • 令牌不应该提前生成。相反,应用程序应该生成令牌,并立即将用户的浏览器重定向到访问点URL。

相关资源伟德棋牌大全

文章

端点