特定の外部APIに対してリクエストをおこないたい

導入

当方Webエンジニアをしております。こ゚縁があってkintoneのカスタマイズを行う機会に恵まれました。
APIドキュメントに目を通したのですがなかなかに独自仕様が多く、以下の内容の足がかりをいただければと思い投稿させていただきました。

内容

認証トークンの保持方法について

ユーザー操作 ▶ バックエンドからのAPIコール ▶ レスポンス受取 ▶ ユーザー表示 がどのようなフローで行われるのか、参考になるドキュメントがありましたらご教示いただきたく存じます。

  • ご存知の通り、認可されたAPIリクエストには何らかのトークンが必要になるかと思います。セキュリティの観点からサーバサイドからの通信が必要になります。
  • クライアントサイドで実行されるJavascriptの実装は簡単にできるかと思うのですが、サーバサイド(Nodeなど)のカスタマイズができるのかどうかが読み取れませんでした。
  • 具体的には https://example.com/api/users のようなAPIに対して、独自Bererトークンなどを付与しながらサーバサイドからのアクセスが可能かどうかご教示いただきたく存じます。

blt_waka 様

はじめまして。ご質問ありがとうございます!

認証系は、kintoneを触りはじめたときに困惑するポイントだと思います。。。

kintoneでは、APIを使って中のデータを触る際、以下の認証方法が使えます:

● APIトークン認証
→ アプリごとに発行できるAPIトークンを使って認証します。トークンごとに、操作範囲(読み取り・編集・削除)権限をコントロールできます。

● パスワード認証
→ ユーザーがWeb上からログインする際に入力するログイン名/パスワードを使って認証します。そのユーザーの権限が継承されます。

● OAuthクライアント認証
→ 実装は少々手間ですが、OAuth認証も利用可能です。認証したユーザーの権限が継承されます。

● セッション認証
→ 今回は利用できないかもしれませんが、JavaScriptカスタマイズをする際などに利用します。Web画面を操作しているユーザーの権限が継承されます。

サーバーサイドからのアクセスであれば、APIトークン認証か、パスワード/OAuth認証のいずれかになるかと思います。

利用できる認証方式や、認証方法については以下のページに記載があります。

具体的に利用するAPIや操作が決まっていれば、どの認証方式が有用かのアドバイスもできると思いますので、よろしければお知らせください。

「いいね!」 2

だいちゃん様

早速ご回答いただき誠にありがとうございます。
添付いただいたリンクを参照のうえ、追加で質問させていただきたく存じます。

仮で以下のようなREST APIを「自社で展開している」と想定します。

  • /api/token : 新規認証トークンを発行する。リクエストボディにメールアドレスとパスワードを含める。
  • /api/users : 登録されているユーザー一覧を取得する。ヘッダーにBeareトークンとして認証トークンを含める

これらのエンドポイントに「kintoneから」アクセスしたいと仮定します。

1. APIリクエストの実行環境

前述のとおり、APIリクエストはサーバサイドからが原則です。これはクライアントサイドから実行されるJavascriptではなく、サーバサイドで実行されるJavascript(ex: Node.js)で実行される必要があります。
kintoneではNode.jsでJavascriptコードを実行するための環境が用意されているのでしょうか?

2. レスポンスの受取とユーザ画面への反映

(質問1におけるサーバサイドでの実行が可能である前提で質問いたします)
サーバサイドでデータを受け取った際にそれをユーザーが見える形で表示する必要があります。(ex: /api/usersで受け取った情報を表示させたい)
サーバサイドで受けとった情報をクライアントサイドに渡す or サーバサイドでデータをレンダリングする(PHPのようなイメージ)ことは可能でしょうか?

的はずれなことをお聞きしているようで大変恐縮ですが、お力添えいただけますと幸いにございます。何卒よろしくお願い申しあげます。

blt_waka 様

ご返信ありがとうございます。
私の認識に誤りがあり申し訳ございませんでした。

  1. APIリクエストの実行環境

kintone にカスタマイズを行い、御社で用意したAPIを実行したいものと認識しております。(こちら相違ないでしょうか…?)

kintoneには、外部APIを実行するための kintone.proxy() が用意されています。

御社のAPIが、 kintone.proxy() を用いた実行が可能であれば、kintoneから御社のAPIを実行することは可能と存じます。

なお、ご質問の意図と異なるとは思いますが、参考までに、kintone API は REST API と言われる Web API の1種なので、Node.jsのようなサーバーサイドで実行される JavaScript からでも XMLHttpRequest() や fetch() を用いてアクセスすることが可能です。

参考:

  1. レスポンスの受取とユーザ画面への反映

kintone JavaScript API を実行することで、kintoneの画面を書き換えることは可能です。

また、DOM操作を行うことで、比較的自由に画面を書き換えることができます。


的はずれな回答となっていましたら、ご指摘いただけますと幸いです。

だいちゃん様
ご回答ありがとうございます。

1. APIリクエストの実行環境

kintone にカスタマイズを行い、御社で用意したAPIを実行したいものと認識しております

こちら認識齟齬ございません。

ご教示頂いた kintone.proxy()
こちらが私の探していたものでございます。

このproxy APIを利用して、クライアントサイドから自社実装のAPIにアクセスできるかと存じます。
ただし、クライアントサイドからの実行のように思えますので、機密性の高い情報(認証トークンなど)を取り扱うのは難しそうに思えます。
APIトークンなどの認証が必要な場合は少々テクニカルな実装が必要そうです。

2. レスポンスの受取とユーザ画面への反映

こちらに関しても確認いたしました。kintone.proxy()APIなどを用いてクライアントサイドで処理を完結させるということであればこちらの考慮は不要かと存じます。

ご回答いただけたおかげで解像度が非常に高まりました。
お忙しいところご丁寧にありがとうございました。

「いいね!」 1

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。