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

第三方鑒權插件

您可以通過本插件配置自己的鑒權服務為API的訪問進行鑒權。

1. 概述

API網關在調用API后端服務之前將先調用用戶的鑒權服務,收到鑒權服務的鑒權成功應答后才會繼續調用后端服務,否則給客戶端返回鑒權失敗的應答。第三方鑒權插件支持的功能如下:

  • 允許用戶自定義發送給鑒權服務的請求參數;

  • 允許用戶將鑒權應答結果在API網關緩存一定時間,保持業務的平滑度;

  • 允許用戶自定義鑒權失敗的應答;

image

2. 插件配置

重要

2023-05-09號之前購買的專享實例,如果不生效需提交工單聯系我們給您升級實例版本。

2.1 當鑒權服務為公網地址時,插件配置示例如下:

---
parameters:                           # 鑒權結果表達式中使用到的參數定義
  statusCode: "StatusCode"            # http應答碼
authUriType: "HTTP"                   # 鑒權服務類型:HTTP:公網的鑒權地址,HTTP-VPC:VPC授權地址
authUri:                              # 鑒權服務定義
  address: "http://auth.com:8080"     # 鑒權服務地址,包括端口號
  path: "/auth"                       # 鑒權服務路徑
  timeout: 7000                       # 鑒權服務超時時間,最大為10秒
  method: POST                        # 鑒權服務HTTP Method
passThroughBody: false                # 是否將請求的body透傳給鑒權服務
passThroughPath: true                 # 如果為true,請求path將放到X-Ca-Remote-Auth-Raw-Path頭中發送給鑒權服務
cachedTimeBySecond: 10                # API網關緩存鑒權結果應答的時間,最長為10分鐘(目前緩存是將所有apiuid+authparameters作為主鍵去緩存的)
trimAuthorizationHeaderPrefix: true   # 如果鑒權參數位置在Authorization頭中,智能跳過前綴提取參數內容,比如從Authorization:bearer hello這個頭提取出來的值是hello,而不是bearer hello
authParameters:                       # 發送給鑒權服務的參數映射
  - targetParameterName: x-userId     # 發送給鑒權服務的參數名稱
    sourceParameterName: userId       # 對應的原始請求中的參數名稱
    targetLocation: query             # 發送給鑒權服務的參數位置
    sourceLocation: query             # 對應的原始請求中的參數位置
  - targetParameterName: x-password   # 發送給鑒權服務的參數名稱
    sourceParameterName: password     # 對應的原始請求中的參數名稱
    targetLocation: query             # 發送給鑒權服務的參數位置
    sourceLocation: query             # 對應的原始請求中的參數位置
  - targetParameterName: token
    sourceParameterName: Authorization
    targetLocation: query
    sourceLocation: header
successCondition: "${statusCode} = 200"  # 判斷鑒權應答的表達式,表達式為True表示鑒權成功
errorMessage: "auth failed"           # 鑒權失敗時,客戶端收到的應答x-ca-errormessage頭的值
errorStatusCode : 401                 # 鑒權失敗時,客戶端收到的http status值
errorPassThroughHeaderList: auth-result1,auth-result2           # 鑒權失敗時,透傳鑒權應答的指定頭給客戶端
errorPassThroughBody: true            # 鑒權失敗時,將鑒權應答的body透傳給客戶端
ignoreAuthException: true             # 如果鑒權發生Exception,比如超時,連接出錯,忽略鑒權結果,直接訪問后端

綁定了此插件的API,API網關在處理相關請求的時候,會先根據定義組裝一個鑒權請求發送給“http://auth.com:8080”,并且根據應答判斷鑒權是否通過。如果鑒權沒有通過,可以定制鑒權失敗的應答返回給客戶端。

2.2 當鑒權服務在VPC資源內時,需先給鑒權服務創建VPC授權,插件配置示例如下:

---
parameters:                           # 鑒權結果表達式中使用到的參數定義
  statusCode: "StatusCode"            # http應答碼
authUriType: "HTTP-VPC"               # 鑒權服務類型:HTTP為公網的鑒權地址,HTTP-VPC為VPC授權地址
authUri:                              # 鑒權服務定義
  vpcAccessName: "slbAccessForVip"    # 鑒權服務的VPC授權名稱
  path: "/auth"                       # 鑒權服務路徑
  timeout: 7000                       # 鑒權服務超時時間,最大為10秒
  method: POST                        # 鑒權服務HTTP Method
passThroughBody: false                # 是否將請求的body透傳給鑒權服務
cachedTimeBySecond: 10                # API網關緩存鑒權結果應答的時間,最長為10分鐘(目前緩存是將所有apiuid+authparameters作為主鍵去緩存的)
authParameters:                       # 發送給鑒權服務的參數映射
  - targetParameterName: x-userId     # 發送給鑒權服務的參數名稱
    sourceParameterName: userId       # 對應的原始請求中的參數名稱
    targetLocation: query             # 發送給鑒權服務的參數位置
    sourceLocation: query             # 對應的原始請求中的參數位置
  - targetParameterName: x-password   # 發送給鑒權服務的參數名稱
    sourceParameterName: password     # 對應的原始請求中的參數名稱
    targetLocation: query             # 發送給鑒權服務的參數位置
    sourceLocation: query             # 對應的原始請求中的參數位置
successCondition: "${statusCode} = 200"  # 判斷鑒權應答的表達式,表達式為True表示鑒權成功
errorMessage: "auth failed"           # 鑒權失敗時,客戶端收到的應答x-ca-errormessage頭的值
errorStatusCode : 401                 # 鑒權失敗時,客戶端收到的http status值
errorPassThroughHeaderList: auth-result1,auth-result2           # 鑒權失敗時,透傳鑒權應答的指定頭給客戶端
errorPassThroughBody: true            # 鑒權失敗時,將鑒權應答的body透傳給客戶端
ignoreAuthException: true             # 如果鑒權發生Exception,比如超時,連接出錯,忽略鑒權結果,直接訪問后端

2.3 支持提取鑒權結果Body中的JSON中的字段作為表達式的參數

---
parameters:                           # 鑒權結果表達式中使用到的參數定義
  clientId: "BodyJsonField:$.clientId"# 鑒權應答BODY中的JSON結構中的參數名為clientId
authUriType: "HTTP-VPC"               # 鑒權服務類型:HTTP:公網的鑒權地址,HTTP-VPC:VPC授權地址
authUri:                              # 鑒權服務定義
  vpcAccessName: "slbAccessForVip"    # 鑒權服務的VPC授權名稱
  vpcScheme: "https"                  # 鑒權服務協議指定HTTPS,不指定默認是HTTP
  path: "/auth"                       # 鑒權服務路徑
  timeout: 7000                       # 鑒權服務超時時間,最大為10秒
  method: POST                        # 鑒權服務HTTP Method
passThroughBody: false                # 是否將請求的body透傳給鑒權服務
cachedTimeBySecond: 10                # API網關緩存鑒權結果應答的時間,最長為10分鐘(目前緩存是將所有apiuid+authparameters作為主鍵去緩存的)
authParameters:                       # 發送給鑒權服務的參數映射
  - targetParameterName: x-userId     # 發送給鑒權服務的參數名稱
    sourceParameterName: userId       # 對應的原始請求中的參數名稱
    targetLocation: query             # 發送給鑒權服務的參數位置
    sourceLocation: query             # 對應的原始請求中的參數位置
  - targetParameterName: x-password   # 發送給鑒權服務的參數名稱
    sourceParameterName: password     # 對應的原始請求中的參數名稱
    targetLocation: query             # 發送給鑒權服務的參數位置
    sourceLocation: query             # 對應的原始請求中的參數位置
successCondition: "${clientId} = 10086"  # 判斷鑒權應答的表達式,表達式為True表示鑒權成功
errorMessage: "auth failed"           # 鑒權失敗時,客戶端收到的應答x-ca-errormessage頭的值
errorStatusCode : 401                 # 鑒權失敗時,客戶端收到的http status值
errorPassThroughHeaderList: auth-result1,auth-result2           # 鑒權失敗時,透傳鑒權應答的指定頭給客戶端
errorPassThroughBody: true            # 鑒權失敗時,將鑒權應答的ody透傳給客戶端
ignoreAuthException: true             # 如果鑒權發生Exception,比如超時,連接出錯,忽略鑒權結果,直接訪問后端

如果鑒權服務返回的應答中的clientId字段為10086,那么鑒權就成功。

{"code":200,"clientId":10086}

2.4 支持提取鑒權結果與插件數據集進行身份鑒權,實現動態白名單

用戶通過插件數據集保存一份白名單數據,API網關從第三方鑒權結果的應答中提取用戶身份字段,并且驗證用戶身份是否在白名單中,只有白名單中用戶才能通過鑒權。

---
parameters:                           # 鑒權結果表達式中使用到的參數定義
  statusCode: "StatusCode"            # http應答碼
  clientId: "BodyJsonField:$.clientId"# 鑒權應答BODY中的JSON結構中的參數名為clientId
authUriType: "HTTP-VPC"               # 鑒權服務類型:HTTP:公網的鑒權地址,HTTP-VPC:VPC授權地址
authUri:                              # 鑒權服務定義
  vpcAccessName: "slbAccessForVip"    # 鑒權服務的VPC授權名稱
  path: "/auth"                       # 鑒權服務路徑
  timeout: 7000                       # 鑒權服務超時時間,最大為10秒
  method: POST                        # 鑒權服務HTTP Method
passThroughBody: false                # 是否將請求的body透傳給鑒權服務
cachedTimeBySecond: 10                # API網關緩存鑒權結果應答的時間,最長為10分鐘(目前緩存是將所有apiuid+authparameters作為主鍵去緩存的)
authParameters:                       # 發送給鑒權服務的參數映射
  - targetParameterName: x-userId     # 發送給鑒權服務的參數名稱
    sourceParameterName: userId       # 對應的原始請求中的參數名稱
    targetLocation: query             # 發送給鑒權服務的參數位置
    sourceLocation: query             # 對應的原始請求中的參數位置
  - targetParameterName: x-password   # 發送給鑒權服務的參數名稱
    sourceParameterName: password     # 對應的原始請求中的參數名稱
    targetLocation: query             # 發送給鑒權服務的參數位置
    sourceLocation: query             # 對應的原始請求中的參數位置
successCondition: "${statusCode} = 200"  # 判斷鑒權應答的表達式
accessParameterName: clientId         # 參與數據集內數據進行比對的參數名稱
accessByDataSet: dataset_test         # 參與鑒權的數據集,如果數據集內數據包含了clientId的值,那么鑒權就通過
errorMessage: "auth failed"           # 鑒權失敗時,客戶端收到的應答x-ca-errormessage頭的值
errorStatusCode : 401                 # 鑒權失敗時,客戶端收到的http status值
errorPassThroughHeaderList: auth-result1,auth-result2           # 鑒權失敗時,透傳鑒權應答的指定頭給客戶端
errorPassThroughBody: true            # 鑒權失敗時,將鑒權應答的body透傳給客戶端
ignoreAuthException: true             # 如果鑒權發生Exception,比如超時,連接出錯,忽略鑒權結果,直接訪問后端

如果鑒權服務返回的應答中的clientId字段值在名稱為dataset_test的插件數據集中存在,那么鑒權就成功。

2.5 支持與APP驗證融合

---
parameters:                           # 鑒權結果表達式中使用到的參數定義
  statusCode: "StatusCode"            # http應答碼
authUriType: "HTTP-VPC"               # 鑒權服務類型:HTTP:公網的鑒權地址,HTTP-VPC:VPC授權地址
authUri:                              # 鑒權服務定義
  vpcAccessName: "slbAccessForVip"    # 鑒權服務的VPC授權名稱
  path: "/auth"                       # 鑒權服務路徑
  timeout: 7000                       # 鑒權服務超時時間,最大為10秒
  method: POST                        # 鑒權服務HTTP Method
cachedTimeBySecond: 10                # API網關緩存鑒權結果應答的時間,最長為10分鐘(目前緩存是將所有apiuid+authparameters作為主鍵去緩存的)
authParameters:                       # 發送給鑒權服務的參數映射
  - targetParameterName: x-password   # 發送給鑒權服務的參數名稱
    sourceParameterName: password     # 對應的原始請求中的參數名稱
    targetLocation: query             # 發送給鑒權服務的參數位置
    sourceLocation: query             # 對應的原始請求中的參數位置
successCondition: "${statusCode} = 200"  # 判斷鑒權應答的表達式
errorMessage: "auth failed"           # 鑒權失敗時,客戶端收到的應答x-ca-errormessage頭的值
errorStatusCode : 401                 # 鑒權失敗時,客戶端收到的http status值
errorPassThroughHeaderList: auth-result1,auth-result2           # 鑒權失敗時,透傳鑒權應答的指定頭給客戶端
errorPassThroughBody: true            # 鑒權失敗時,將鑒權應答的ody透傳給客戶端
ignoreAuthException: true             # 如果鑒權發生Exception,比如超時,連接出錯,忽略鑒權結果,直接訪問后端
orAppAuth: true						  # APP驗證和第三方鑒權只要有一個成功了,就算鑒權成功

配置了orAppAuth: true參數后,APP驗證和第三方鑒權只要有一個成功了,就算鑒權成功。

2.6 支持從鑒權服務的應答中提取字段發給后端服務

從鑒權服務返回的應答中提取字段發給后端服務,可以用authResultPassThrough來配置發送給后端服務的參數映射。

應答提取支持的參數位置:StatusCode、Header、JsonBody。

后端服務支持的參數位置:Header、Query、Formdata。

---
parameters:                         # 鑒權結果表達式中使用到的參數定義
  statusCode: "StatusCode"          # http應答碼
  clientId: "BodyJsonField:$.Body"  # 鑒權服務返回的jsonbody
authUriType: "HTTP"                 # 鑒權服務類型:HTTP:公網的鑒權地址,HTTP-VPC:VPC授權地址
authUri:                            # 鑒權服務定義
  address: "http://127.0.0.1:8080"  # 鑒權服務地址,包括端口號
  path: "/web"                      # 鑒權服務路徑
  timeout: 7000                     # 鑒權服務超時時間,單位是ms。最大支持10s
  method: POST                      # 鑒權服務HTTP Method
passThroughBody: true               # 是否將請求的body透傳給鑒權服務
cachedTimeBySecond: 10              # API網關緩存鑒權結果應答的時間,最長為10分鐘(目前緩存是將所有apiuid+authparameters作為主鍵去緩存的)
authResultPassThrough:              #發送給后端服務的參數映射
  - targetParameterName: x-echo-header-client-id  #發送給后端服務的參數名稱
    targetLocation: header                        #發送給后端服務的參數位置
    sourceParameterName: clientId                 #從鑒權服務應答中提取的參數
  - targetParameterName: x-echo-header-status-code
    targetLocation: query
    sourceParameterName: statusCode
successCondition: "${statusCode} = 200"  # 判斷鑒權應答的表達式
errorMessage: "auth failed"              # 鑒權失敗時,客戶端收到的應答x-ca-errormessage頭的值
errorStatusCode: 401                     # 鑒權失敗時,客戶端收到的http status值
errorPassThroughHeaderList: auth-result1,auth-result2   # 鑒權失敗時,透傳鑒權應答的指定頭給客戶端
errorPassThroughBody: true               # 鑒權失敗時,將鑒權應答的ody透傳給客戶端

2.7 支持緩存鑒權應答

API網關為提高業務處理的平滑度,減少用戶鑒權服務的壓力,支持緩存鑒權應答,目前緩存是將apiuid + 所有authparameters 拼接成主鍵,鑒權應答作為緩存的值進行緩存的。緩存鑒權應答的時間最長為10分鐘。

3. 日志

在投遞給sls的日志中,有一個plugin字段,里面描述了第三方鑒權的結果,"authSuccess":"0"為鑒權失敗,"authSuccess":"1"為鑒權成功。

plugin:[{"context":{"authSuccess":"0"},"pluginName":"remoteAuth"}]