APIキーの管理
コンソールのAPI & Webhooksでご自身のAPIキーを確認し、サーバー側で保管し、テスト用には別のサンドボックスアプリケーションを使用し、401エラーと403エラーを解消する方法です。
API & Webhooksは、選択中のアプリケーションに紐づいています。アプリケーションごとに1つのキーがあり、そのキー自体が環境を表します。本番アプリケーションに別のテスト用キーはありません。これはサーバー側のシークレットであり、フロントエンドのコードやアプリのバンドルに含めてはいけません。
APIキーは、コンソールのサイドバーのAPI & Webhooksにあり、作業中のアプリケーションに紐づいています。パスワードと同様に扱ってください。そのアプリケーションの権限でAPIへの完全なアクセスを許可するものです。
#キーの見つけ方
- ビジネスコンソールにログイン
business.didit.meにアクセスしてサインインします。
- アプリケーションを選択
コンソール上部のドロップダウンから、対象のアプリケーションを選びます。アプリケーションごとに独自のキーがあります。
- API & Webhooksを開く
ここにAPIキーがあり、webhookの送信先とその署名シークレットも一緒に確認できます。

- Create API keyで新しいキーを発行します。キーはアプリケーションごとです。
- シークレットはここに一度だけ表示されます。自社のシークレット管理システムにコピーしてください。
- Rotate secretは、キーの名前を変えずにシークレットだけを差し替えます。
- Last usedを見れば、失効させる前に、そのキーが使われているものか忘れられたものかを判別できます。
#APIキーと署名シークレットは別物
混同すると分かりにくいエラーが発生するため、明確にしておく価値があります。
| 用途 | 単位 | |
|---|---|---|
| APIキー | x-api-keyヘッダーでDiditへの呼び出しを認証する | アプリケーションごと |
| Webhook署名シークレット | 受信したwebhookが本当にDiditから送られたものかを検証する | 送信先(destination)ごと |
署名シークレットをAPIキーとして送信すると401になります。APIキーでwebhookを検証しようとすると署名が一致しません。どちらもよくある間違いです。
APIキーはシークレットです。フロントエンドのコード、公開リポジトリ、モバイルアプリのバンドルには絶対に含めないでください。サーバー側だけで保管してください。配布済みのアプリバンドルに含まれたキーは、攻撃者に渡ったキーと同じです。 API認証をご覧ください。
#テスト用のキーを取得する
本番環境に対してテストを行うことはありません。サンドボックスモードで別のアプリケーションを作成してください。サンドボックスのセッションは外部チェックをすべてモックし、課金されることも実際のユーザーデータに触れることもありません。構築中はそのキーを使い、実際の検証には別の本番アプリケーションを維持してください。
本番アプリケーションに「テスト用キー」というものは存在しません。キー自体が環境なので、シークレットを保管する場所でキーの名前を明確に区別しておく価値があります。サンドボックスでのテストをご覧ください。
#キーのローテーション
キーが漏洩した可能性がある場合は、同じAPI & Webhooksページから再生成してください。再生成すると古いキーは即座に無効になるため、ボタンを押した瞬間に本番トラフィックが失敗し始めないよう、先に使用箇所すべてを更新してください。
定期的なローテーションは良い習慣です。単なるクリックではなく、デプロイとして計画してください。
#401と403の解消
| エラー | 原因 | 対処法 |
|---|---|---|
401 | キーが存在しない、形式が誤っている、または再生成された | 該当アプリケーションのAPI & Webhooksから現在のキーをコピーしてください。余分な空白や引用符が入っていないか、署名シークレットを貼り付けていないかを確認してください |
403 | キーは有効だが、この呼び出しは許可されていない | 多くの場合、アプリケーションの取り違え、本番キーでのサンドボックス専用フィールド(またはその逆)、キーに不足している権限、アカウントで有効になっていない機能のいずれかです |
特定のワークフローに対する403は、ほとんどの場合、そのキーがそのワークフローを所有しているアプリケーションとは別のアプリケーションのものであることを意味します。コンソールでアプリケーションを切り替え、そちらのキーをコピーしてください。詳細はAPIエラーとその意味をご覧ください。
#キーでできることを制限する
キーがアクセスできるデータの種類を制限したい場合(例えば、あるサービスに書類の画像を取得させたくない場合など)、それはキーの設定ではなく権限の問題であり、利用できる内容はアカウントによって異なります。キーに制限がない、あるいは制限があると思い込むのはどちらも危険なので、サポートに確認してください。
#チーム内で誰がキーを見られるか
キーの表示はロールに従います。DeveloperロールはAPIキーを含みますが、Readerは含みません。チームメンバーがこのページを見つけられない場合は、報告の前にまずロールを確認してください。チームメンバーの招待とロールの設定をご覧ください。
#すべての呼び出しが記録される
APIキーによるリクエストは、人物ではなくアプリケーションに紐づけてAudit Logsに記録されます。だからこそ、複数のサービスで1つのキーを共有していると、インシデント発生時の調査が難しくなります。利用者ごとに1つのキーを持たせるほうが、状況を把握しやすくなります。監査ログの利用をご覧ください。
