iT邦幫忙

2024 iThome 鐵人賽

DAY 27
0
Modern Web

我阿嬤都會的 kintone 客製化開發系列 第 27

Day 27 | setProxyConfig 隱藏敏感資料

  • 分享至 

  • xImage
  •  

cover

在瀏覽器端發送請求,其實都可以在開發者工具上看到 headers、payload 等資料,如果想在 kintone 中隱藏這些資料,可以使用 setProxyConfig 這個方法來達成。

關於請求流程

在發送 API 之前,我們可以用 setProxyConfig 將必要的資料先存在 config 中,例如 header 裡有帶 token 的情況。

但是這個設定必須是在 外掛程式的設定畫面 才能執行,因此我們必須在設定頁先將資料存好,之後才能在客製化的程式碼中調用。

setProxyConfig

基本的使用方法如下:

kintone.plugin.app.setProxyConfig(url, method, headers, data, successCallback)

這些參數應該不需要我多說,最重要的是 urlmethod,後續在調用 kintone.proxy 的時候,會先比對 urlmethod 是否相同,如果相同的話,則會帶上事先設定好的 config。

實際使用

首先在應用程式的外掛設定頁面進行設定,這個設定是要發送 API 去其他應用程式取得資料,在使用 Restful API 的時候 hrader 必須寫上 X-Cybozu-Authorization,不然拿不到資料。

我們這樣做的用意是希望在客製化的程式碼中可以不用帶上 token,這邊完全沒有 proxy 的問題。

const url = 'https://xxxxxx.cybozu.com/k/v1/records.json?app=172'
const headers = {
  'X-Cybozu-Authorization': 'xxxxxxxxxxxxxxxxxxxxxxxxx=='
}
const data = {}
const successCallback = () => {
  console.log('ok')  
}
kintone.plugin.app.setProxyConfig(url, 'GET', headers, data, successCallback)

然後在客製化程式碼寫上:

(async () => {
  const pluginId = kintone.$PLUGIN_ID
  const url = 'https://xxxxxx.cybozu.com/k/v1/records.json?app=172'
  const res = await kintone.plugin.app.proxy(pluginId, url, 'GET', {}, {})
  console.log(res)
})()

會發現即使我們沒帶 token,同樣也可以拿到資料。

外掛中的 setProxyConfig()

在外掛中同樣也可以使用 kintone.plugin.app.setProxyConfig(),事先在外掛中將 header 設定好後,直接調用就可以隱藏掉機密資訊。

官網上也有串接 Slack 的案例,同樣是使用這種方法將 token 隱藏:

我什麼時候會需要用到 setProxyConfig

這件事非常見仁見智,畢竟 kintone 這套系統本來就是給公司內部使用的,做這件事就等同於在防公司內部的員工,一般人甚至連瀏覽器的開發工具都不會開,更別說該如何使用。

如果真的有需要防,大概只有在 訪客空間 時,外部人員進來 kintone 時需要設定。不過根據上面的使用方法,其實 setProxyConfig 很難用,每次要新增 API endpoint,就要在外掛重新再設定一次。

所以一般不會特別去設定這些東西,若真的有不想洩漏的資訊、功能的更動頻率低、且有需要 proxy 才建議使用。


上一篇
Day 26 | kintone 儲存外掛設定的困擾
下一篇
Day 28 | 定期更新 kintone 之 Github Action Cron
系列文
我阿嬤都會的 kintone 客製化開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言