[Auth0] アプリケーション初回ログイン時のユーザー同意をスキップさせる

2021.06.19

こんにちは、CX事業本部の若槻です。

認証管理プラットフォーム Auth0 では、既定の設定ではユーザーがアプリケーションに初回ログインする際に下記のようなダイアログが表示され、アプリケーションによるアクセス許可(認可)への同意を求められます。

これはOIDC(OpenID Connect)準拠の仕様ですが、ユーザーエクスペリエンスを考えるとこの初回認証時の同意操作を省略してスキップさせたい場合があります。

今回は、Auth0 でアプリケーション初回ログイン時のユーザー同意をスキップさせてみました。

やってみた

設定

Auth0 管理ダッシュボードにログインしたら、サイドバーメニューより[Applications]-[APIs]を開き、同意をスキップさせたいアプリケーションが認可に使用するAPI(ほとんどの場合はテナントに既定で作成されているAuth0 Management API)を選択します。

[Settings]タブ内を下にスクロールし、[Access Settings]-[Allow Skipping User Consent]を有効にし、[Save]をクリックして設定変更を保存します。

これにより、ユーザーは同意を求められることなくアプリケーションに初回ログインを行うことができます。

localhostからのアクセス時

localhostからのアクセス時はこの設定に関わらず必ず同意を求められるのでローカル開発時には注意して下さい。

localhostは検証可能なファーストパーティではないため(悪意のあるアプリケーションがユーザーのlocalhostで実行される可能性があるため)、Auth0は、ファーストパーティアプリケーションとしてマークされているかどうかに関係なく、localhostで実行されているアプリケーションの同意ダイアログを常に表示します。

補足

このユーザー同意のスキップですが、Auth0 の場合は First-party applications のみ可能となります。

First-party applications can skip the consent dialog, but only if the API they are trying to access on behalf of the user has the Allow Skipping User Consent option enabled.

First-party applications の定義は下記ドキュメントに詳しいですが、端的に言うと「認可サーバー(API)と同じ Auth0 テナント内で管理されている認可クライアント(アプリケーション)」のことです。

ここで言う認可クライアント(アプリケーション)は、Auth0 テナント上に作成したSPAなどのアプリケーション(下記画像の Web App )を指し、

認可サーバー(API)は、テナント上に既定で作成されている Auth0 Management API を指します。

既定では管理ダッシュボードから作成されたアプリケーションが使用する認可サーバーはすべて Auth0 Management API となります。そのため Auth0 Management API の[Allow Skipping User Consent]を有効にすればアプリケーションでの同意をスキップされられるという寸法です。

おわりに

Auth0 でアプリケーション初回ログイン時のユーザー同意をスキップさせてみました。

設定方法を調べるにあたり Auth0 の認可フローを少しだけ理解することが出来てよかったです。

参考

以上