警告
2020年8月改訂のセキュアコーディング ガイドライン
に抵触する内容が含まれています。認証情報が漏洩した場合の影響を考慮して慎重に検討してください。
該当箇所:外部ライブラリ(MSAL.js)内のアクセストークン保存部分
はじめに
kintoneとMicrosoft製品を連携する場合は認証が必要で、認証方式はそのプラットフォームによって変わります。
プラットフォームを大きく分けると以下の2種類が考えられます。
- Webブラウザー
- サーバーやアプリケーション
本記事では、WebブラウザーでMicrosoft製品との連携に必要となる認証の方法を説明します。
認証方法は
ユーザーのサインインを処理して、JavaScriptシングルページアプリケーション からMicrosoft Graph APIを呼び出す
で詳しく紹介されています。
本記事はkintoneのJavaScriptカスタマイズに特化した内容です。
また、認証を通過してMicrosoft製品と連携できることを確認するために、例としてEntra IDのログイン情報を取得します。
取得には
Microsoft Graph API
を利用します。
Microsoft Graph APIを使えばMicrosoft 365のOutlookやEntra ID、OneDriveなどと連携できます。
サーバーやアプリケーション上での認証方法紹介も予定していますので、今後の記事にご期待ください。
Microsoft連携の実践編として
Outlook連携 - kintoneからOutlookメールの送受信をしよう
を公開しています。
こちらも合わせて確認してください。
概要
やることは2つです。
Entra ID認証
kintoneの一覧画面にログインボタンを表示します。
ログインボタンをクリックすると、Entra IDの認証画面を表示します。
初回はアクセス許可の確認画面が表示されます。
Microsoft Graph APIの実行
認証に成功すると、「ユーザー情報取得」ボタンと「ログアウト」ボタンを表示します。
「ユーザー情報取得」ボタンをクリックすると、
Microsoft Graph APIのユーザー取得
を実行し、ユーザープリンシパル名を表示します。
ユーザープリンシパル名とはADのユーザーを一意に識別するもので、形式は「アカウント名@ドメイン名」になります。
利用するライブラリ
Microsoft製品の認証にはOAuth 2.0が利用されており、JavaScriptでOAuth 2.0認証を実現するライブラリです。
参考)認証ライブラリは
Microsoft IDプラットフォームの認証ライブラリ
にまとめられています。
スタイリッシュなポップアップを表示するライブラリです。
今回の認証には直接関係ありませんが、見た目をよくするために利用しています。
設定
kintoneのアプリIDがMicrosoftの設定で必要になり、MicrosoftのアプリケーションIDがkintoneの設定で必要になります。
そのため、kintone → Micorsoft → kintoneの順で設定します。
1. kintoneのアプリ作成
まずはkintoneアプリを作成します。
フィールドは利用しないのでフィールドなしのkintoneアプリを作りましょう。
kintoneアプリIDがMicrosoftの設定で必要になるのでメモします。
kintoneアプリIDはURLから確認できます。先ほど作成したアプリを開きます。
そのURLが「https://{subdomain}.cybozu.com/k/944/」の場合、「944」がkintoneアプリIDになります。
2. Microsoftの設定
Microsoft IDプラットフォームにアプリケーションを登録する の手順に従いMicrosoftアプリを登録します。
ポイントは以下になります。
- プラットフォームの追加ではWebを選択します。
- 「暗黙的フローを許可する」にチェックします。
- リダイレクトURLには「https://{subdomain}.cybozu.com/k/{kintoneアプリID}/」を入力します。
- Microsoft Graphのアクセス許可を設定する必要はありません。
OAuth 2.0ではログイン時にアクセス許可を要求できるからです。
詳細は ユーザーの同意 を確認してください。
テナント全体の同意を設定し、同意ページを表示させない方法も記載されています。
下記アプリケーションIDはkintoneのJS設定で利用します。メモしましょう。
3. kintoneの設定
JavaScript / CSSを設定します。
「アプリの設定 > JavaScript / CSSでカスタマイズ」の「PC用のCSSファイル」に以下のURLを設定します。
- https://js.cybozu.com/sweetalert2/v7.3.5/sweetalert2.min.css
「アプリの設定 > JavaScript / CSSでカスタマイズ」の「PC用のJavaScriptファイル」に以下のURL/ファイルを設定します。
- https://js.cybozu.com/jquery/3.2.1/jquery.min.js
- https://secure.aadcdn.microsoftonline-p.com/lib/0.1.5/js/msal.min.js
- https://js.cybozu.com/sweetalert2/v7.3.5/sweetalert2.min.js
以下のサンプルコードをエディタにコピーして、ファイル名を「sample.js」、文字コードを「UTF-8N」で保存します。
12行目に「4.2 Microsoftの設定」でメモしたアプリケーションIDを設定し、アップロードします。
ファイル名は任意ですが、ファイルの拡張子は「js」にしてください。
|
|
動作確認
設定できたら、kintoneの一覧画面に表示されるログインボタンをクリックして動作を確認してください。
解説
トークン
サンプルコードでは、ログイン時はid_tokenを取得し、リクエスト前にaccess_tokenを取得しています。
access_tokenはMicrosoft Graph APIを使ったリクエストの認証に必要です。
トークンの詳細はEntra IDの
トークンと要求の概要
を参考にしてください。
上記URL内に記載されているとおり
jwt.ms
にトークンを貼り付けると内容を確認できます。
終わりに
Microsoft製品との連携となると難しい印象をもつ方もいらっしゃいますが、今回の記事で「連携できそうだな」と思っていただける方がいらっしゃれば幸いです。
このTipsは、2018年4月版kintoneで動作を確認しています。