一起使用 Kong 的 key-auth 和 session 插件

2024-06-27

我是 Kong 的新手,并且已启用 key-auth 插件的设置。所以当我去https://localhost:32443 I get {"message":"No API key found in request"}。如果我指定一个 apikey,我会得到应用程序的主页,但它是空白的。第一个请求成功并收到 200 响应 -https://localhost:32443/?apikey=EMCmOc4oE3KjE3CtCoqqDZ9cBM8mEJWjDcOuPJLXPZCmOJbb- 因为它包含“apikey”。该页面发出的下载缩小 JS 和 CSS 的所有后续请求都会失败并返回 401,因为它们不包含“apikey”。我尝试将应用程序配置为使用“会话”插件,但不确定这是否正确,或者我只是没有正确配置它。

Request URL: https://localhost:32443/favicon.ico
Request Method: GET
Status Code: 401 
Remote Address: 127.0.0.1:32443
Referrer Policy: no-referrer-when-downgrade
content-length: 41
content-type: application/json; charset=utf-8
date: Sun, 06 Sep 2020 07:32:32 GMT
server: kong/2.0.4
status: 401
www-authenticate: Key realm="kong"
x-kong-response-latency: 1
:authority: localhost:32443
:method: GET
:path: /favicon.ico
:scheme: https
accept: image/avif,image/webp,image/apng,image/*,*/*;q=0.8
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9
cookie: session_2=dhhdjdjdjjd...
referer: https://localhost:32443/?apikey=EMCmOc4oE3KjE3CtCoqqDZ9cBM8mEJWjDcOuPJLXPZCmOJbb
sec-fetch-dest: image
sec-fetch-mode: no-cors
sec-fetch-site: same-origin
user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) 
Chrome/85.0.4183.83 Safari/537.36

如果我手动将“apikey”添加到新选项卡中的网站图标请求中,则它可以正常加载。我不确定是否缺少一些配置,可以自动对所有请求执行此操作?

非常感谢


也许现在有点晚了但我尝试回答这个问题

一般来说,使用带有 API 密钥的主页 UI 并不是一个好主意。

将查询传递给后续调用
据我所知,将您的 API 密钥附加到您的 html 将启动的所有后续请求中是不可能的。 据我所知服务人员 https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API有能力拦截并修改请求 https://developer.mozilla.org/en-US/docs/Web/API/FetchEvent。他们可以将您的查询附加到所有请求中。缺点是它们仅适用于 https,旧浏览器不支持它们

UI 的 API 密钥
如果您问我,您应该使用 API 密钥进行 api 调用,而不是用于 UI。

选择
在我看来基本认证 https://docs.konghq.com/hub/kong-inc/basic-auth/将是更好/最接近的选择,因为您的浏览器将保护这些设置并将这些凭据(标头)包含到所有后续请求中,以便您的 UI 可以加载其他内容。如果您决定更改基本身份验证凭据,您可以轻松更改/删除它们,并且权限将消失。

但是如果我仍然想对 UI 使用 API 密钥怎么办?
如果您想使用 api 密钥作为登录名,您可以使用会话。 此会话将创建一个发送到您的浏览器的 cookie。
BUT
从现在起,所有其他后续请求将不再需要 api 密钥。即使您删除了 api-key,会话(cookie)仍然有效,直到过期为止,您不会实现自定义逻辑来处理这些情况(绑定密钥和会话内部)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一起使用 Kong 的 key-auth 和 session 插件 的相关文章

随机推荐

  • 有什么方法可以使用标签助手创建循环吗?

    有没有办法创建一个标签帮助器 以某种方式迭代 类似重复器 内部标签帮助器 也就是说 类似
  • 从 Visual Studio 调试 SQL Server 2005 中的存储过程?

    我在这里和其他地方看到很多令人沮丧的问题 但没有明确的答案 我试图让存储过程进行调试 但没有成功 客户端 VS2005或VS2008 两者都不起作用 当我从存储过程上下文菜单中选择 步入存储过程 时 我在调试窗口中看到 已被用户取消 这就是
  • Spring 和 Angular JS

    我正在使用 Spring 和 Angular JS 开发一个应用程序 但我不知道我所做的是否正确 在同一个 Maven 项目中 我做了 一个用户类 然后我创建了一个 RestController 在其中创建了我的 webservice 在
  • 将外部脚本嵌入 Next.js 应用程序

    我一直在尝试将外部 JavaScript 源嵌入到我的 Next js 应用程序中 但不断收到以下错误 无法对 文档 执行 写入 无法写入 从异步加载的外部脚本写入文档 除非 它是明确打开的 可以找到我尝试使用的代码here https w
  • 重建父级时调用子级 init 方法 - flutter

    据我了解和颤振的工作机制 有状态的小部件方法仅在小部件树中第一次构建时被调用一次 并且每次其状态更改或父级重建时都会调用构建方法方法 bottomNavigationBar BottomNavigationBar items BottomN
  • Egit 拒绝接受 id_rsa

    我是第一次尝试在 Eclipse 中设置 egit 的 git 用户 这样我就可以继续通过 Eclipse 轻松编码 问题是 每次我尝试通过 egit 克隆存储库时 都会出现错误 无法列出可用分支 原因 ssh 电子邮件受保护 cdn cg
  • jquery javascript 从 JSON 对象中删除对象数据

    我有 JSON 对象 看起来像下面的对象 这个对象可以持续几天 所以我想知道我是否可以删除完整的集合 相当于下面示例中的位置 0 或位置 1 我必须首先迭代该对象并尝试找出哪个是哪个 假设我要删除邮政编码为 06238 的集合 我需要运行整
  • Chrome 不渲染
    标签,FF 渲染

    我有一个非常烦人的问题 我的网站有一个表单 可以在 Firefox 中运行 但不能在 IE 或 Chrome 中运行 它是用 WordPress 的 Gravity Forms 制作的 但这可能与该问题无关 因为另一个表单插件也出现了同样的
  • 如何检查Python列表中是否存在第n个元素?

    我有一个 python 列表 x a b c 有 3 个元素 我想检查第四个元素是否存在而不收到错误消息 我该怎么做呢 您检查长度 len x gt 4 或者你抓住了IndexError例外 try value x 3 except Ind
  • 在 Jekyll 中,include_relative 对于布局文件如何工作?

    我有一个名为default html in my layouts文件夹 在default html 我想添加一个亲戚include to test html 它也在我的布局文件夹中 I add include relative test h
  • 我应该如何优化 .net 代码中对一个简单存储过程的多次调用?

    我有一个非常简单的存储过程 create procedure spFoo v varchar 50 as insert into tbFoo select v 我有 50 个值要插入到 tbFoo 中 这意味着在我的 c 代码中我调用 sp
  • 使用 SourceMaps 进行 Gulp 过滤器

    我有一个类似的问题here https stackoverflow com questions 26040358 gulp different pipe collections within same task coffeescript a
  • 在网络共享或 Intranet 项目上编译网站时请求“System.Web.AspNetHostingPermission”类型的权限失败

    我已经使用 Windows 7 一段时间了 但自从升级以来 我还没有必要使用特定的旧版 Intranet 应用程序 不幸的是 该应用程序被设置为托管在 Intranet 服务器上的 ASP NET 网站项目 当我在 Visual Studi
  • CMake:set_property(TARGET ...) 和 set_target_properties 之间有区别吗?

    在 CMake 中 假设只设置一个属性 那么两者之间有什么区别吗 set target properties target PROPERTIES prop value and set property TARGET target PROPE
  • 在 PowerShell 中的屏幕和文件中显示输出

    我怎样才能让所有这些不仅输出在屏幕上 而且保存到文本文件中CSV http en wikipedia org wiki Comma separated values format OUs Get ADObject LDAPFilter ob
  • Android,如何读取我的应用程序中的二维码?

    在我的应用程序中 我需要读取二维码 我在网上搜索并找到了 Zing 代码 但是很多开发人员在使用它时遇到了问题 而且它似乎有问题 如果我假设我的客户在他们的设备上安装了二维码阅读器 我如何使用这些应用程序并通过隐式意图调用它们 如果用户没有
  • 使用可通过 FTP 访问的 Web 服务器进行 Git 托管?

    我运行一个 糟糕的 网站 托管在第三方网络服务器上 我可以通过 FTP 访问我的 Web 服务器 据推测 Git 本身具有通过 FTP 推送 拉取的能力 由于我的 Web 服务器已经可以随处访问 我希望将其用作集中式 Git 存储库 我可以
  • boto3 搜索未使用的安全组

    我正在使用 AWS Python SDK Boto3 我想知道哪些安全组未使用 我用 boto2 做到了 但我不知道如何用 boto3 做同样的事情 from boto ec2 connection import EC2Connection
  • Kotlin:将数据从适配器传递到活动

    我尝试从以下位置传递我的数据adapter给我的另一个activity with a putExtra但是当我单击列表中的一个项目移至第二个项目时activity 没有检索到任何数据 并且不显示我输入的默认文本 另一种方法呢 或者我想念它什
  • 一起使用 Kong 的 key-auth 和 session 插件

    我是 Kong 的新手 并且已启用 key auth 插件的设置 所以当我去https localhost 32443 I get message No API key found in request 如果我指定一个 apikey 我会得