日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

key-auth插件

更新時(shí)間:

key-auth插件實(shí)現(xiàn)了基于API Key進(jìn)行認(rèn)證鑒權(quán)的功能,支持從HTTP請(qǐng)求的URL參數(shù)或者請(qǐng)求頭解析API Key,同時(shí)驗(yàn)證該API Key是否有權(quán)限訪問(wèn)。本文介紹如何配置key-auth插件。

插件類型

認(rèn)證鑒權(quán)。

配置字段

認(rèn)證配置

名稱

數(shù)據(jù)類型

填寫要求

默認(rèn)值

描述

consumers

array of object

必填。

-

配置服務(wù)的調(diào)用者,用于對(duì)請(qǐng)求進(jìn)行認(rèn)證。

keys

array of string

必填。

-

API Key的來(lái)源字段名稱,可以是URL參數(shù)或者HTTP請(qǐng)求頭名稱。

in_query

bool

in_queryin_header至少有一個(gè)為 true。

true

配置為true時(shí),網(wǎng)關(guān)會(huì)嘗試從URL參數(shù)中解析API Key。

in_header

bool

in_queryin_header至少有一個(gè)為 true。

true

配置為true時(shí),網(wǎng)關(guān)會(huì)嘗試從HTTP請(qǐng)求頭中解析API Key。

global_auth

array of string

選填(**僅實(shí)例級(jí)別配置**)

-

只能在實(shí)例級(jí)別配置,若配置為true,則全局生效認(rèn)證機(jī)制; 若配置為false,則只對(duì)做了配置的域名和路由生效認(rèn)證機(jī)制,若不配置則僅當(dāng)沒有域名和路由配置時(shí)全局生效(兼容老用戶使用習(xí)慣)。

子項(xiàng)consumers中每一項(xiàng)的配置字段說(shuō)明如下。

名稱

數(shù)據(jù)類型

填寫要求

默認(rèn)值

描述

credential

string

必填。

-

配置該consumer的訪問(wèn)憑證。

name

string

必填。

-

配置該consumer的名稱。

鑒權(quán)配置(非必需)

名稱

數(shù)據(jù)類型

填寫要求

默認(rèn)值

描述

allow

array of string

選填(**非實(shí)例級(jí)別配置**)。

-

只能在路由或域名等細(xì)粒度規(guī)則上配置,對(duì)于符合匹配條件的請(qǐng)求,配置允許訪問(wèn)的 consumer,從而實(shí)現(xiàn)細(xì)粒度的權(quán)限控制。

重要
  • 在一個(gè)規(guī)則里,鑒權(quán)配置和認(rèn)證配置不可同時(shí)存在。

  • 對(duì)于通過(guò)認(rèn)證鑒權(quán)的請(qǐng)求,請(qǐng)求的Header會(huì)被添加一個(gè)X-Mse-Consumer字段,用以標(biāo)識(shí)調(diào)用者的名稱。

配置示例

全局配置認(rèn)證和路由粒度進(jìn)行鑒權(quán)

以下配置將對(duì)網(wǎng)關(guān)特定路由或域名開啟Key Auth認(rèn)證和鑒權(quán)。credential字段不能重復(fù)。

在實(shí)例級(jí)別做如下插件配置:

global_auth: false
consumers:
- credential: 2bda943c-ba2b-11ec-ba07-00163e1250b5
  name: consumer1
- credential: c8c8e9ca-558e-4a2d-bb62-e700dcc40e35
  name: consumer2
keys:
- apikey
- x-api-key

route-aroute-b兩個(gè)路由做如下插件配置:

allow:
- consumer1

*.example.comtest.com兩個(gè)域名做如下插件配置:

allow:
- consumer2
說(shuō)明
  • 此例指定的route-aroute-b即在創(chuàng)建網(wǎng)關(guān)路由時(shí)填寫的路由名稱,當(dāng)匹配到這兩個(gè)路由時(shí),將允許nameconsumer1的調(diào)用者訪問(wèn),其他調(diào)用者不允許訪問(wèn)。

  • 此例指定的*.example.comtest.com用于匹配請(qǐng)求的域名,當(dāng)發(fā)現(xiàn)域名匹配時(shí),將允許nameconsumer2的調(diào)用者訪問(wèn),其他調(diào)用者不被允許訪問(wèn)。

根據(jù)該配置,下列請(qǐng)求可以允許訪問(wèn)。假設(shè)以下請(qǐng)求會(huì)匹配到route-a這條路由。

  • 將API Key設(shè)置在URL參數(shù)中。

    curl  http://xxx.hello.com/test?apikey=2bda943c-ba2b-11ec-ba07-00163e1250b5
  • 將API Key設(shè)置在HTTP請(qǐng)求頭中。

    curl  http://xxx.hello.com/test -H 'x-api-key: 2bda943c-ba2b-11ec-ba07-00163e1250b5'

認(rèn)證鑒權(quán)通過(guò)后,請(qǐng)求的Header中會(huì)被添加一個(gè)X-Mse-Consumer字段,在此例中其值為consumer1,用以標(biāo)識(shí)調(diào)用方的名稱。

下列請(qǐng)求將拒絕訪問(wèn)。

  • 請(qǐng)求未提供API Key,返回401。

    curl  http://xxx.hello.com/test
  • 請(qǐng)求提供的API Key無(wú)權(quán)訪問(wèn),返回401。

    curl  http://xxx.hello.com/test?apikey=926d90ac-ba2e-11ec-ab68-00163e1250b5
  • 根據(jù)請(qǐng)求提供的API Key匹配到的調(diào)用者無(wú)訪問(wèn)權(quán)限,返回403。

    # consumer2不在route-a的allow列表里
    curl  http://xxx.hello.com/test?apikey=c8c8e9ca-558e-4a2d-bb62-e700dcc40e35

網(wǎng)關(guān)實(shí)例級(jí)別開啟

以下配置將對(duì)網(wǎng)關(guān)實(shí)例級(jí)別開啟 Basic Auth 認(rèn)證,所有請(qǐng)求均需要經(jīng)過(guò)認(rèn)證后才能訪問(wèn)。

global_auth: true
consumers:
- credential: 2bda943c-ba2b-11ec-ba07-00163e1250b5
  name: consumer1
- credential: c8c8e9ca-558e-4a2d-bb62-e700dcc40e35
  name: consumer2
keys:
- apikey
- x-api-key

相關(guān)錯(cuò)誤碼

HTTP狀態(tài)碼

出錯(cuò)信息

原因說(shuō)明

401

No API key found in request.

請(qǐng)求未提供API Key。

401

Request denied by Key Auth check. Invalid API key.

不允許當(dāng)前API Key訪問(wèn)。

403

Request denied by Basic Auth check. Unauthorized consumer.

請(qǐng)求的調(diào)用方無(wú)訪問(wèn)權(quán)限。