SharePoint API のaccessToken取得方法について

前提

下記のリンクのようにAzure ACS によって、accessTokenの取得を行っておりました。

問題

Azure ACS は、2024 年 11 月 1 日をもって新規テナントでは機能しなくなり、既存のテナントでも 2026 年 4 月 2 日をもって機能しなくなり、完全に廃止されます。

代替方法

MicrosoftはEntra ID (旧Azure AD)によるaccessToken取得方法を推奨しています。

課題

Azure ACS によるaccessToken取得の時はクライアントIDとクライアントシークレットを用いて実現しておりました。
Entra IDによるSharePoint API のaccessToken取得方法に関しては、クライアントシークレットではなく、X.509の証明書を用いた認証でアクセストークンを取得しないと、APIが使えないようになっているようです。

確認したいこと

Entra IDによるSharePoint API のaccessToken取得方法を調べたところ以下のリンクにたどり着きました。

3. SharePointのアクセストークン取得時に必要な証明書を準備する

までは問題ないのですが、

4. 証明書を使用し、SharePointのアクセストークンを取得する

にて記載されているようなコードをkintoneのJavaScriptカスタマイズにて実現ができません。
(リンクのコードはC#)

知見のある方がいればご教示いただきたいと思います。
よろしくお願いいたします。

SharePoint を使ったカスタマイズはやったことないので詳しくはないですが、そもそもブラウザ上で動く JavaScript で証明書を使った認証は難しいとされているようです。

というのも、ブラウザの JavaScript は秘匿性のある情報を扱うことが困難 (難しい手順無しに認証情報が確認できて、コピーされてしまうリスクが高い) なので、一時的な認証情報だけを扱い、永続的な認証情報は別の仕組みに任せることがセオリーのようです。なので Node.js や C# を使った、クライアントツール (=デバッグが容易ではない) の実装や、サーバーサイドでトークンを発行してブラウザで使うといった実装のほうが、一般的なようですね。 OS の証明書ストアがブラウザの JavaScript からは利用できないのも理由っぽいです。

なので、方法としては

  • 証明書の保管とトークンの発行を安全な独自サーバー上で行い、 kintone カスタマイズはそれを独自サーバーから取得する処理だけ組み込む
  • アプリ認証ではなくユーザー認証の仕組みを使い、 OAuth でログインする

になるのかなぁという印象です。

他に詳しい方がいたらそちらの方の回答を参考にされたほうが良いかもです……。