メインコンテンツにスキップ

OAuth認証

このページにはImmichでOAuthを使用する際の詳細が記載されています。

ヒント

app.immich:///oauth-callback を有効なリダイレクトURIとして設定できませんか?代替案についてはモバイルリダイレクトURIをご覧ください。

概要

ImmichはOAuth2を基盤としたIDレイヤーであるOpenID Connect (OIDC)を介して第三者認証をサポートしています。OIDCは以下を含むほとんどのIDプロバイダーでサポートされています:

必要条件

ImmichでOAuthを有効にする前に、サードパーティの認証サーバーで新しいクライアントアプリケーションを構成する必要があります。この設定の具体的な内容はプロバイダーによって異なりますが、一般的なアプローチは同じです。

  1. 新しい(クライアント)アプリケーションを作成する

    1. プロバイダーの種類はOpenID ConnectまたはOAuth2でなければなりません。
    2. クライアントの種類Confidentialと設定してください。
    3. アプリケーションの種類はWebである必要があります。
    4. グラントの種類はAuthorization Codeである必要があります。
  2. リダイレクトURI/オリジンを構成する

    サインインリダイレクトURIには以下を含める必要があります:

    • app.immich:///oauth-callback - モバイルアプリからOAuthでログインするため
    • http://DOMAIN:PORT/auth/login - WebクライアントでOAuthによりログインするため
    • http://DOMAIN:PORT/user-settings - Webクライアントで手動でOAuthをリンクするため

    リダイレクトURIにはImmichにアクセスする際に使用するすべてのドメインを含める必要があります。例として以下が挙げられます:

    モバイル

    • app.immich:///oauth-callback (iOSおよびAndroidのモバイルアプリが正常に動作するためにこれを必ず含めてください)

    ローカルホスト

    • http://localhost:2283/auth/login
    • http://localhost:2283/user-settings

    ローカルIP

    • http://192.168.0.200:2283/auth/login
    • http://192.168.0.200:2283/user-settings

    ホスト名

    • https://immich.example.com/auth/login
    • https://immich.example.com/user-settings

OAuthを有効化

新しいOAuthクライアントアプリケーションを構成したら、Immichをウェブ上の管理設定ページ (Administration -> Settings) を使用して構成できます。

設定デフォルト説明
有効化booleanfalseOAuthの有効化/無効化
発行者URLURL(必須)必須。クライアントの自己発見URL(前のステップで取得)
クライアントIDstring(必須)必須。クライアントID(前のステップで取得)
クライアントシークレットstring(必須)必須。クライアントシークレット(前のステップで取得)
スコープstringopenid email profileリクエスト送信時に含めるスコープの完全リスト(スペース区切り)
署名アルゴリズムstringRS256IDトークンを署名する際に使用するアルゴリズム(例:RS256, HS256)
ストレージラベルの主張stringpreferred_usernameユーザーのストレージラベルの主張¹
ロールの主張stringimmich_roleユーザーのロールの主張。("user"または"admin"を返すべき)¹
ストレージ割り当ての主張stringimmich_quotaユーザーのストレージ割り当ての主張¹
デフォルトストレージ割り当て (GiB)number0ストレージ割り当て主張のないユーザーのデフォルト割り当て (無制限の場合は0を入力)
ボタンテキストstringOAuthでログインウェブ上のOAuthボタンのテキスト
自動登録booleantruetrueの場合、最初のサインイン時にユーザーが自動的に登録されます
自動開始booleanfalsetrueの場合、ログインページをスキップして自動的にOAuthログインプロセスを開始
モバイルリダイレクトURI上書き設定URL(空)Http(s)方式の代替モバイルリダイレクトURI
主張オプション [1]

主張はユーザー作成時にのみ使用され、それ以降同期されません。

情報

発行者URLは以下のような形式であり、有効なJSONドキュメントを返す必要があります。

  • https://accounts.google.com/.well-known/openid-configuration
  • http://localhost:9000/application/o/immich/.well-known/openid-configuration

URLの.well-known/openid-configuration部分はオプションであり、発見時に自動的に追加されます。

自動開始

自動開始が有効化されている場合、ログインページは自動的にユーザーをOAuth認証URLにリダイレクトし、OAuthでログインします。再度ログイン画面にアクセスするには、ブラウザの戻るボタンを使用するか、直接 /auth/login?autoLaunch=0 に移動してください。 自動開始は /auth/login?authLaunch=1 に移動することでリクエストごとに有効化することも可能です。例えばNextcloudの外部サイトアプリやoidcアプリを使用して、Immichがログイン済みインスタンスと直接やり取りできるようにする場合に役立ちます。

モバイルリダイレクトURI

モバイルアプリのリダイレクトURIは app.immich:///oauth-callback であり、カスタムスキームです。このカスタムスキームがOAuthプロバイダーにとって無効なリダイレクトURIの場合、以下の方法で問題を回避できます:

  1. app.immich:///oauth-callback にリクエストを転送するhttp(s)エンドポイントを構成する。
  2. 新しいエンドポイントをプロバイダーで有効なリダイレクトURIとしてホワイトリストに登録する。
  3. OAuth設定で新しいエンドポイントをモバイルリダイレクトURI上書き設定として指定する。

これらの手順が整えば、モバイルアプリからカスタムスキームのリダイレクトURIを使用せずにOAuthを使用できるようになります。

情報

Immichには (/api/oauth/mobile-redirect) というルートがあり、このルートはすでに app.immich:///oauth-callback にリクエストを転送するよう構成されています。これを手順1に使用できます。

例としての構成

Authentikの例

Authentik例

以下はAuthentik向けに構成されたOAuthの例です:

許可されたリダイレクトURIの構成 (Authentik OAuth2/OpenIDプロバイダ)

Immichシステム設定におけるOAuthの構成

設定
発行者URLhttps://example.immich.app/application/o/immich/.well-known/openid-configuration
クライアントIDAFCj2rM1f4rps******CLEum6hH9...
クライアントシークレット0v89FXkQOWO********mprbvXD549HH6s1iw...
スコープopenid email profile
署名アルゴリズムRS256
ストレージラベルの主張preferred_username
ストレージ割り当ての主張immich_quota
デフォルトストレージ割り当て (GiB)0 (0の場合は無制限)
ボタンテキストAuthentikでサインイン (オプション)
自動登録有効化済み (オプション)
自動開始有効化済み (オプション)
モバイルリダイレクトURI上書き設定無効化
モバイルリダイレクトURI
Googleの例

Googleの例

以下はGoogle向けに構成されたOAuthの例です:

許可されたリダイレクトURIの構成 (Googleコンソール)

Immichシステム設定におけるOAuthの構成

設定
発行者URLhttps://accounts.google.com
クライアントID7********vuls.apps.googleusercontent.com
クライアントシークレットG******************OO
スコープopenid email profile
署名アルゴリズムRS256
ストレージラベルクレイムpreferred_username
ストレージクォーラクレイムimmich_quota
デフォルトストレージクォーラ (GiB)0 (無制限クォーラの場合は0)
ボタンテキストGoogleでサインイン (任意)
自動登録有効 (任意)
自動起動有効
モバイルリダイレクトURIのオーバーライド有効 (必須)
モバイルリダイレクトURIhttps://example.immich.app/api/oauth/mobile-redirect