kintoneプラグインから外部サービスのOAuth2.0で認証する場合のリダイレクトURIの設定が固定値のみしか受け付けない場合の対処方法

聞きたいこと

kintoneプラグインから外部サービスのOAuth2.0で認証する場合のリダイレクトURIの設定が固定値のみしか受け付けない場合、どうすればいいか

何を実現したいのか

kintoneアプリ上から、Boxを操作(ファイルアップロードやフォルダー作成など)できるプラグインを開発し配布したい

参考にした記事

発生した問題やエラーメッセージ

  • リダイレクトURIの設定が必要だがBoxのOAuthは固定値しか受け付けない
    • kintoneはサブドメインやアプリIDが異なるのでプラグインを配布する場合、リダイレクトURIを固定するのは現実的ではない
    • https://*.cybozu.com/k/*のような曖昧な表現は不可だった
      {F08AE32F-8B73-4773-928B-9173E797D28D}

試したこと、調べたこと

リダイレクトURIは固定値で試し、Boxのアクセストークンを取得することに成功しました。

  • OAuth2.0を利用するために、Boxの開発者コンソールでマイPlatformアプリを作成
    • リダイレクトURIの設定:https://{サブドメイン}.cybozu.com/k/{アプリコード}/
      ※{サブドメイン}、{アプリコード}は開発で利用している環境のものを入力
    • kintoneプラグイン上でAPIを叩き認証する

Box for kintoneはサンプルプラグインとしてzipを配布しているが、kintoneにインストールするだけで利用できます。
ただし、ソースコードが非公開でどうやっているのか不明でした(非公式のAPIを利用している可能性が高いです)

こんにちわ。
Boxを使用していないので詳細は試せていませんが、プラグインとして配布しているzipの中にある「js/desktop.js」を見ればヒントになるのではないでしょうか?
min化や難読化もされていないようです。

2 Likes

私も OAuth 関連で苦労したことがいくつかありますが、決まって kintone だけでは解決しづらい問題が多かった印象があります。

リダイレクトURIは 認可サーバーが結果を返答する先 なようなので、1環境だけであれば特定のアプリにカスタマイズ JavaScript を仕込んで認証情報を取り出すようにすれば動きますが、複数環境の場合は認証情報を取り出す係の何かが存在していないといけない気がします。

正攻法で行くなら、 AWS Lambda と Amazon API Gateway を組み合わせたり何かしらのサーバーを使うなどして、認証情報を Box に問い合わせるプログラムを載せる必要があると思います。
多分、サンプルプラグインは cybozu.com のどこかのサーバーにそういったプロキシが存在していて、それを非公開APIで操ってるんだと思います。

1 Like

lemon_sour様、住田 知基様
ご回答ありがとうございます。

正攻法で行くなら、 AWS Lambda と Amazon API Gateway を組み合わせたり何かしらのサーバーを使うなどして、認証情報を Box に問い合わせるプログラムを載せる必要があると思います。

やはりそうですよね。。。
正攻法でサーバー使って回避する方法を検討しようかと思います。

プラグインとして配布しているzipの中にある「js/desktop.js」を見ればヒントになるのではないでしょうか?

難読化されているかと思い最初から見ていませんでした。少し見てみるとソースコードそのまま入ってそうで、認証部分などもあり参考にできそうです。
もう少し見てみようと思いますが、cybouzuの非公開APIに接触してしまう可能性がありそうです。その場合は諦めて上述の正攻法で対処してみようかと思います。

皆様、ご回答ありがとうございました。
ベストアンサーは、(諦めて)正攻法でいくしかなさそうなことを教えていただいた、住田 知基様にさせていただきます。
lemon_sour様も大変参考になる情報ありがとうございました!

1 Like

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