电商接口中API key 和 token 有什么区别?

news2024/11/25 2:22:00

API key 和 token 就有这种问题,它们都是作为一种身份验证机制。前几天我在一次讨论中,有人提到这两个词可以互换使用。大约两分钟后,我不得不停止谈话并说“你们应该知道它们是不同的,对吧?”‍,说完会上鸦雀无声,显然他们不知道。事实证明,很多人都无法告诉我电商接口 API key 和 token 之间的区别。因此文本我将向大家介绍它们之间的区别。

图片

定义

我们可以通过以下定义来区分 API key 和 token。

  • API key — 通过代码调用 API 时提供的值,用于识别和授权调用者。它旨在以编程方式使用,通常是一长串字母和数字。

  • token — 代表用户会话或特定权限的一段数据。供个人用户在有限的时间内使用。

这或许是一个对你有用的开源项目,mall项目是一套基于 SpringBoot + Vue + uni-app 实现的电商系统(Github标星60K),采用Docker容器化部署。包括前台商城项目和后台管理系统,能支持完整的订单流程!涵盖商品、订单、购物车、权限、优惠券、会员、支付等功能,功能很强大!

  • 项目地址:https://github.com/macrozheng/mall

  • 视频教程:https://www.macrozheng.com/video/

后台管理系统演示:

图片

前台商城项目演示:

图片

生成方式

两者之间的创建方法通常也不同。

  • API key — 通常通过用户界面创建一次,并且在轮换之前可以一直使用,也可以选择配置为在一定时间后过期。

  • token — 在成功验证或登录成功时动态生成。通常过期时间较短,但可以刷新较长时间。

权限范围

权限范围是指授权部分或使用提供的身份验证方法时可以执行哪些功能。

  • API key — 固定的、不变的应用程序功能权限集。谁拥有 API key 就可以访问允许的资源。

  • token — 仅限于个人有权访问的特定数据或功能。这可能会受到角色或其他业务级别要求的影响。往往更关注数据限制。

安全性

它们的安全性如何?如果 API key 或者 token 被恶意用户泄露或获取,潜在的损害有多严重?

  • API key — 由于这些密钥通常是长期存在的并且不限制对数据的访问,因此如果被泄露,可能会造成毁灭性的后果。通常撤销 API key 是解决问题的唯一手段。应用程序通常需要具有良好的可观察性,以识别受损密钥并找到恶意用户。

  • token — 设计时考虑到了安全性。通常是短暂的并且很容易被撤销。受损的令牌仅具有用户有权访问的数据范围,并且将自动过期。

使用方式

什么时候你会使用其中一种而不是另一种呢?看起来他们在利弊之间取得了很好的平衡。

  • API key — 用于服务器到服务器之间的通信,例如访问天气 API 等公共数据、与第三方系统集成。

  • token — 用于用户身份验证、细粒度访问控制 (FGAC)、授予对资源的临时访问权限、浏览器访问权限以及管理用户会话。

举个例子

现在我们了解了两者之间的区别,让我们看一下使用 Momento JavaScript SDK 的两个实际示例。

API key

上文提到过 API key 通常是在用户界面创建的。考虑到隐私性,我没有可以分享的实际 API key。不过以下是大家作为用户如何通过 Momento 控制台获取 API 密钥的方法。‍

图片

大家可以选择所需的权限,设置可选的到期日期,然后点击 Genergate Api Key。然后我们可以工作流程中使用该 API key。

token

与成功登录时生成的基于用户的一次性 token 进行对比。我们可以采用基于角色的示例,用户可以只读访问日历事件缓存,但可以发布和订阅协作主题的访问权限。

// called on successful login
exports.handler = async (event) => {
  const user = await loadUserMetadata(event.userId);
  let token;
  switch(user.role){
    case 'data-entry':
       token = await getDataEntryToken(user.tenantId);
        break;
    case 'admin':
      token = await getAdminToken(user.tenantId);
      break;
    default:
      throw new Error('Role not supported');
  }

  return token;
};

const getDataEntryToken = async (tenantId) => {
  const scope = {
    permissions: [
      {
        role: 'readonly',
        cache: 'calendar-events',
        item: {
          keyPrefix: tenantId
        }
      },
      {
        role: 'publishsubscribe',
        cache: 'collaboration',
        topic: `${tenantId}-events`
      }
    ]
  };

  const response = await authClient.generateDisposableToken(scope, ExpiresIn.minutes(15));
  return {
    token: response.authToken,
    expiresAt: response.expiresAt.epoch()
  };
};

以在此处看到,我们创建了一个有效期为 15 分钟的令牌,其权限范围是日历功能的只读权限,并且仅允许访问以用户所属的 tenantId 开头的缓存项。因此,我们根据用户的属性限制了功能和数据。

总结

API key 和 token 各有优缺点。一个并不比另一个更好。在决定要应用哪种身份验证机制时,请结合你的应用场景来进行选择。如果是用在用户会话的身份验证场景时,可以使用 token。如果是给第三方系统提供接口需要身份验证时,可以使用 API key。

原文地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1123073.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

json入参取特定分段值--mirth

入参 {"HEADER": {"MSGID": "000","MSGSENDDATE": "2023-10-12 00:00:00","MSGTYPE": "TJ025","AccepterID": "","SenderID": "HIS","MSGSTATUS":…

ChatGPT和DALL-E的系统提示词被曝光;每个开发人员都该了解的GPU知识

🦉 AI新闻 🚀 ChatGPT和DALL-E的系统提示词被曝光,揭示了其规则和操作细节 摘要:开发者和网友通过一种方法成功获取了ChatGPT和DALL-E的系统提示词,揭示了它们在对话和图像生成过程中遵循的规则和操作细节。这些提示…

数据库监控:关键指标和注意事项

【squids.cn】 全网zui低价RDS,免费的迁移工具DBMotion、数据库备份工具DBTwin、SQL开发工具等 听到模糊的说法“我们的数据库有问题”对于任何数据库管理员或管理员来说都是一场噩梦。有时是真的,有时不是,到底问题出在哪里呢?真…

基于springboot实现车辆充电桩平台管理系统项目【项目源码+论文说明】计算机毕业设计

基于sprinboot实现车辆充电桩平台管理系统演示 摘要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,车辆充电桩管理系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大&#…

【全国数据】中国乡镇级矢量面状数据(shp)

数据介绍 中国43655个乡镇,面状,GCS_WGS_1984坐标系。 数据预览 数据举例: 专栏分享常用的地理空间数据,包括矢量数据、栅格数据、统计数据等,订阅专栏后,从私信查收专栏完整数据包,持续同步更新…

Django实现音乐网站 (22)

使用Python Django框架做一个音乐网站, 本篇音乐播放器功能完善:顺序播放、设置播放数、歌词滚动等功能。 目录 顺序播放 设置顺序播放 单曲播放数 添加路由 视图处理 模板处理 歌词滚动 视图内容返回修改 样式设置 模板内容 歌词滚动脚本 歌…

为什么这些网站都在使用CFCA证书

在今天的数字时代,保障数据的安全至关重要,尤其是对于金融机构、政府部门和大型企业等组织而言。证书颁发机构在这一领域扮演着关键的角色,而CFCA(中国金融认证中心)证书已经脱颖而出,展现了其与其他证书的…

提取作者用户名,帖子内容,回复时间

import re import csv# 打开名为a1.txt的文件,并以只读模式(r)读取其内容。这里使用了UTF-8编码。 with open(网页源码a1.txt, r, encodingUTF-8) as f:# 读取文件的所有内容并赋值给变量source source f.read()# 使用正则表达式查找所有匹配region_header clea…

YOLOv8改进实战 | 更换损失函数之MPDIOU(2023最新IOU)篇

前言 YOLOv8官方默认损失函数采用的是CIoU。本章节主要介绍如何将MPDIoU损失函数应用于目标检测YOLOv8模型。 目录 一、MPDIoU二、代码实现添加损失函数更换损失函数一、MPDIoU 论文链接:MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression MPDIoU是一种基于…

【Tensorflow 2.12 智能商城商品推荐系统】

Tensorflow 2.12 智能商城商品推荐系统 前言架构数据召回排序部署调用结尾 前言 基于 Tensorflow 2.12 搭建一个简单的智能商城商品推荐系统demo~ 主要包含6个部分,首先是简单介绍系统架构,接着是训练数据收集、处理,然后是召回模型、排序模型…

Vue3.3指北(一)

Vue3.3指北 1、Vue32、Vue3安装3、Vue指令3.1、配置准备1.1.1、WebStrom配置模板1.1.2、配置devtools1.1.3、Vue3指令概览 3.2、内容渲染指令3.2.1、mustache语法3.2.2、v-once1.3.2、v-text1.3.3、v-html1.3.4、v-pre1.3.5、v-cloak 3.3、属性绑定指令3.3.1、v-bind1、v-bind绑…

如何查看SSL证书是OV还是DV?

网站的安全性与信任度对于用户来说至关重要,它决定着用户是否继续浏览以及是否与您开展业务。SSL证书则是确保网站能够通过HTTPS加密安全传输数据的基础,可确保网站的安全可信。部署了SSL证书的网站打开后,在浏览器地址栏处会有安全锁标志。而…

02.MySQL函数及约束、多表笔记

函数 函数是指一段可以直接被另一段程序调用的程序或代码。 字符串函数 MySQL中内置了很多字符串函数,常用的几个如下: 函数功能CONCAT(S1,S2,…Sn)字符串拼接,将S1,S2,.Sn拼接成一个字符串LOWER(str)将字符串str全部转为小写UPPER(str)将…

真正的办公神器-ONLYOFFICE你了解多少?

陈老老老板🤴 🧙‍♂️本文专栏:生活(主要讲一下自己生活相关的内容)生活就像海洋,只有意志坚强的人,才能到达彼岸。 🧙‍♂️本文简述:最近在进行办公软件的调研工作,发现一个开源、…

Merge Joins(PostgreSQL 14 Internals翻译版)

合并连接处理按连接键排序的数据集,并返回以类似方式排序的结果。输入集可以在索引扫描后预先排序;否则,执行者必须在实际合并开始之前对它们进行排序。 归并排序集 让我们看一个合并连接的例子;它在执行计划中由Merge Join节点表示: 优化器…

效率提升一键完成房产小程序源码揭秘高效业务流程优化

在当今快节奏的房产市场中,提升业务流程的效率对于房地产行业从业者来说至关重要。而房产小程序源码作为一种全新的技术解决方案,为行业带来了前所未有的便利和效益。本文将为您揭秘房产小程序源码的重要性以及如何利用该技术优化业务流程,实…

双态IT乌镇用户大会——数据中心业务连续性国标专题研讨会成功举办

2023年10月13日-15日,由ITSS分会、证券基金行业信息技术应用创新联盟指导,ITSS数据中心运营管理组(DCMG)、双态IT论坛、智能运维国标工作组主办,ITSS媒体组、AI范儿协办的“2023第六届双态IT乌镇用户大会”于浙江乌镇召…

内衣迷你洗衣机什么牌子好?迷你洗衣机热销第一名

随着人们的生活水平的提升,越来越多小伙伴来开始追求更高的生活水平,一些智能化的小家电就被发明出来,而且内衣洗衣机是其中一个。现在通过内衣裤感染到细菌真的是越来越多,所以我们对内衣裤的清洗频次会高于普通衣服,…

React之render

一、原理 首先&#xff0c;render函数在react中有两种形式&#xff1a; 在类组件中&#xff0c;指的是render方法&#xff1a; class Foo extends React.Component {render() {return <h1> Foo </h1>;} }在函数组件中&#xff0c;指的是函数组件本身&#xff1a…

Ethernet Protocol

以太网协议说明 1 以太网子层架构 1)MAC and MAC CONTROL Sublayer MAC 负责以太网数据格式中所述的以太网成帧协议以及这些帧的错误检测。MAC 独立于并可以连接到任何类型的物理层设备。这提供了 MAC 子层的实时流控制操作。 MAC CONTROL 和 MAC 子层均由内核在所有操作模式…