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

OIDCプロバイダーのセットアップ

情報

OpenID Connect (OIDC) は、Google、Microsoft、または社内のIDプロバイダーなどの既存アカウントを使ってユーザーがサインインできる認証プロトコルです。これにより、シームレスで安全な認証のためのシングルサインオン(SSO)が可能になります。

このガイドでは、Unraid APIでWebGUIを使用してSSO認証向けのOIDC(OpenID Connect)プロバイダーを設定する手順を説明します。

🚀 クイックスタート

OIDC設定へのアクセス
  1. UnraidサーバーのWebGUIに移動します。
  2. SettingsManagement AccessAPIOIDC に移動します
  3. 異なるプロバイダー用のタブが表示されます。新しいプロバイダーを追加するには + ボタンをクリックします

OIDCプロバイダーインターフェースの概要

SSOオプション付きログインページ 従来のログインフォームとSSOオプション(「Login With Unraid.net」「Sign in with Google」ボタン)を表示するログインページ

このインターフェースには次のものが含まれます:

  • プロバイダータブ: 設定済みの各プロバイダー(Unraid.net、Google など)がタブとして表示されます
  • プロバイダー追加ボタン: + ボタンをクリックして新しいプロバイダーを追加します
  • 認可モードのドロップダウン: 「simple」と「advanced」を切り替えます
  • シンプル認可セクション: 許可するメールドメインと特定のアドレスを設定します
  • 項目追加ボタン: 複数の認可ルールを追加するにはクリックします

認可モードの理解

このインターフェースでは2つの認可モードを提供します:

シンプルモード(推奨)

シンプルモードは、認可を設定する最も簡単な方法です。次のことができます:

  • 特定のメールドメインを許可する(例: @company.com)
  • 特定のメールアドレスを許可する
  • 最小限の設定でUnraidサーバーへのアクセス対象を構成する

シンプルモードを使う場合:

  • 会社ドメインのすべてのユーザーを許可したい
  • 特定ユーザーのリストが少ない
  • OIDC設定が初めてである
アドバンスモード

アドバンスモードでは、クレームベースのルールを使ってきめ細かな制御ができます。次のことができます:

  • JWTクレームに基づく複雑な認可ルールを作成する

  • equals、contains、endsWith、startsWith などの演算子を使用する

  • 複数の条件をOR/ANDロジックで組み合わせる

  • 任意のルールが通ればよい(ORモード)のか、すべてのルールが通る必要がある(ANDモード)のかを選択します

    アドバンスモードを使う場合:

  • グループメンバーシップを確認する必要がある場合。

  • 複数のクレームを検証したい場合(例: メールドメイン AND 確認済みステータス)。

  • 複雑な認可要件がある場合。

  • ルールの評価方法をきめ細かく制御する必要がある場合。

アドバンスモード

認可ルールの設定 ドメインベースのアクセス制御のために email endsWith 演算子を使用したJWTクレーム設定を示すアドバンス認可ルール

会社ドメインを許可

会社ドメインを許可

シンプル認可では:

  • 許可されたメールドメイン: company.com を入力します
  • これにより、@company.com のメールアドレスを持つすべてのユーザーが許可されます

特定ユーザーを許可

  • 特定のメールアドレス: 個別のメールアドレスを追加します
  • 項目を追加 をクリックして複数のアドレスを追加します
アドバンスモードの例

認可ルールモード

複数のルールを使用する場合、どのように評価するかを選択できます:

  • ORモード(既定): いずれかのルールが通ればユーザーは認可されます

  • ANDモード: すべてのルールが通った場合にのみユーザーは認可されます

    確認済みのメールドメイン(ANDモード)

    メールドメインと確認の両方を必須にするには:

  1. 認可ルールモードAND に設定します。
  2. 2つのルールを追加します:
    • ルール 1:
      • クレーム: email
      • 演算子: endsWith
      • : @company.com
    • ルール 2:
      • クレーム: email_verified
      • 演算子: equals
      • : true

これにより、ユーザーは会社のメールアドレスと確認済みメールアドレスの両方を持つ必要があります。

グループベースのアクセス(ORモード)

複数のグループへのアクセスを許可するには:

  1. 認可ルールモード: OR(どれか1つのルールが通る)または AND(すべてのルールが通る)を選択します
  2. 各グループのルールを追加します:
    • クレーム: groups
    • 演算子: contains
    • : admins または別のルールを追加:
    • クレーム: groups
    • 演算子: contains
    • : developers

admins または developers グループのユーザーが認可されます。

複数のドメイン

  • クレーム: email
  • 演算子: endsWith
  • : 複数のドメインを追加します(例: company.comsubsidiary.com

複雑な認可(ANDモード)

複数の条件を必要とする厳格なセキュリティの場合:

  1. 認可ルールモードAND に設定します。
  2. すべてが通過する必要がある複数のルールを追加します:
    • メールは会社ドメインのものでなければなりません
    • メールは確認済みでなければなりません
    • ユーザーは特定のグループに所属している必要があります
    • アカウントで2FAが有効になっている必要があります(該当するクレームがある場合)
設定インターフェースの詳細

プロバイダータブ

  • 設定済みの各プロバイダーは上部にタブとして表示されます

  • タブをクリックするとプロバイダー設定を切り替えられます

  • 右側の + ボタンで新しいプロバイダーを追加します

    認可モードのドロップダウン

  • Simple: メールベースの認可に最適です(多くのユーザーに推奨)。

  • Advanced: JWTクレームを使用した複雑なクレームベースのルール向けです。

    シンプル認可フィールド

    「simple」モードを選択すると、次の項目が表示されます:

    • 許可されたメールドメイン: @なしでドメインを入力します(例: company.com)。
      • ヘルプテキスト: 「これらのドメインで終わるメールアドレスのユーザーはログインできます」
    • 特定のメールアドレス: 個別のメールアドレスを追加します。
      • ヘルプテキスト: 「これらの正確なメールアドレスだけがログインできます」
    • 項目追加 ボタンで複数のエントリを追加します。

    アドバンス認可フィールド

    「advanced」モードを選択すると、次の項目が表示されます:

    • 認可ルールモード: OR(いずれかのルールが通る)または AND(すべてのルールが通る)を選択します。
    • 認可ルール: 複数のクレームベースのルールを追加します。
    • 各ルールごとに:
      • Claim: 確認するJWTクレーム。
      • Operator: 比較方法(equals、contains、endsWith、startsWith)。
      • Value: 照合対象。

    その他のインターフェース要素

  • Developer Sandboxを有効化: トグルを切り替えて、/graphqlGraphQLサンドボックスを有効にします。

  • このインターフェースは、視認性を高めるためにダークテーマを使用しています。

  • フィールドの検証インジケーターは、正しい設定を確実にするのに役立ちます。

必須のリダイレクトURI

注意

すべてのプロバイダーは、この正確なリダイレクトURI形式で設定する必要があります:

http://YOUR_UNRAID_IP/graphql/api/auth/oidc/callback
ヒント

YOUR_UNRAID_IP を実際のサーバーIPアドレス(例: 192.168.1.100 または tower.local)に置き換えてください。

Issuer URLの形式

Issuer URL フィールドは両方の形式を受け付けますが、セキュリティ上はベースURLの使用を強く推奨します:

  • ベースURL(推奨): https://accounts.google.com
  • 完全な検出URL: https://accounts.google.com/.well-known/openid-configuration

⚠️ セキュリティ नोट: 可能な限りベースURL形式を使用してください。システムはOIDC検出のために /.well-known/openid-configuration を自動的に追加します。完全な検出URLを直接使用すると、重要なIssuer検証チェックが無効になり、OpenID Connect仕様でも推奨されません。

正しいベースURLの例:

  • Google: https://accounts.google.com
  • Microsoft/Azure: https://login.microsoftonline.com/YOUR_TENANT_ID/v2.0
  • Keycloak: https://keycloak.example.com/realms/YOUR_REALM
  • Authelia: https://auth.yourdomain.com

✅ 設定のテスト

SSOボタン付きログインページ カスタマイズされたプロバイダーボタンとともに、従来のユーザー名/パスワード認証とSSOオプションの両方を表示するUnraidログインページ

  1. クレーム: email
  2. 演算子: endsWith
  3. : 複数のドメインを追加します(例: company.comsubsidiary.com
  4. 設定したプロバイダーボタンが表示されるはずです
  5. クリックしてログインフローをテストします

トラブルシューティング

よくある問題

"Provider not found" エラー: Issuer URL が正しいこと、またプロバイダーがOIDC検出(/.well-known/openid-configuration)をサポートしていることを確認してください。

"Authorization failed": シンプルモードでは、メールドメインが正しく(@なしで)入力されていることを確認してください。アドバンスモードでは、クレーム名がプロバイダーの送信内容と完全に一致しているか、認可ルールモードが正しく設定されているか(OR か AND か)を確認し、必要なすべてのクレームがトークンに含まれていることを確認してください。実際のクレームとルール評価を確認するには、デバッグログを有効にします。

"Invalid redirect URI": プロバイダー側のリダイレクトURIが完全に一致していることを確認し、標準以外の構成を使用している場合は正しいポートを含め、リダイレクトURIのプロトコルがサーバーの設定(HTTP または HTTPS)と一致していることを確認してください。

ログインボタンが表示されない: 少なくとも1つの認可ルールが設定されていること、およびプロバイダーが有効化/保存されていることを確認してください。

認可モードのドロップダウン

問題をトラブルシューティングするには:

  1. デバッグログを有効にします:
LOG_LEVEL=debug unraid-api start --debug
  1. 次の内容をログで確認します:
  • デバッグログを有効にします:
  • 認可ルールの評価。
  • トークン検証エラー。

「advanced」モードを選択すると、次の項目が表示されます:

問題が発生した場合は、プロバイダーのOIDCドキュメントを確認し、詳細なエラーメッセージについてUnraid APIのログを確認し、プロバイダーが標準のOIDC検出をサポートしていることを確認し、Unraidとプロバイダー間のネットワーク接続を検証してください。追加のヘルプについては、Unraid forums を参照してください。

その他のインターフェース要素

Unraid.netプロバイダー

Unraid.netプロバイダーは組み込み済みで事前設定されています。インターフェースで認可ルールを設定するだけで済みます。

構成:

  • Issuer URL: 事前設定済み(組み込みプロバイダー)
  • Client ID/Secret: 事前設定済み(組み込みプロバイダー)
  • Redirect URI: http://YOUR_UNRAID_IP/graphql/api/auth/oidc/callback
ヒント

プロトコルをサーバー構成に合わせます。SSL/TLS なしでUnraidサーバーにアクセスする場合は http:// を使用します(通常はローカルネットワークアクセス)。サーバーでSSL/TLS を構成している場合は https:// を使用します。一部のOIDCプロバイダー(Google など)は HTTPS を必須とし、HTTP のリダイレクトURIは受け付けません。

YOUR_UNRAID_IP を実際のサーバーIPアドレス(例: 192.168.1.100 または tower.local)に置き換えてください。

Google

設定手順

Google Cloud Console で OAuth 2.0 認証情報を設定します:

  1. APIs & ServicesCredentials に移動します。
  2. Create CredentialsOAuth client ID をクリックします。
  3. アプリケーションの種類として Web application を選択します。
  4. Authorized redirect URIs にリダイレクトURIを追加します。
  5. 求められた場合はOAuth同意画面を設定します。

構成:

  • Issuer URL: https://accounts.google.com
  • Client ID/Secret: OAuth 2.0 クライアント認証情報から取得します
  • Required Scopes: openid, profile, email
  • Redirect URI: http://YOUR_UNRAID_IP/graphql/api/auth/oidc/callback
警告

Googleでは、OAuthリダイレクトURIに有効なドメイン名が必要です。ローカルIPアドレスと .local ドメインは受け付けられません。UnraidサーバーでGoogle OAuthを使用するには、次が必要です:

  • オプション1: リバースプロキシ - 有効なドメイン名をUnraid APIに向けて設定したリバースプロキシ(NGINX Proxy ManagerやTraefikなど)を構成します。
  • オプション2: Tailscale - Tailscale を使用して、Google が受け入れる有効な *.ts.net ドメインを取得します。Tailscale の詳細については、Remote access を参照してください。
  • Keycloak: https://keycloak.example.com/realms/YOUR_REALM

Google Cloud Console と Unraid のOIDC設定の両方でリダイレクトURIを有効なドメインに更新することを忘れないでください。

Google Workspaceドメインでは、hd クレームを使ってアドバンスモードを使用し、組織のドメインへのアクセスを制限します。

Authelia

Autheliaのconfiguration.ymlでOIDCクライアントを設定し、クライアントIDをunraid-apiにして、Autheliaのhash-passwordコマンドを使ってハッシュ化されたシークレットを生成します。

構成:

  • Issuer URL: https://auth.yourdomain.com
  • Client ID: unraid-api(またはAutheliaで設定した値)
  • Client Secret: ハッシュ化されていないシークレット
  • Required Scopes: openid, profile, email, groups
  • Redirect URI: http://YOUR_UNRAID_IP/graphql/api/auth/oidc/callback

Google Workspaceドメインの場合は、hdクレームを使うAdvanced Modeを使用して、組織のドメインへのアクセスを制限します。

Microsoft/Azure AD

Azure Portal](https://portal.azure.com/)でAzure Active Directory → App registrationsの下に新しいアプリを登録します。アプリケーションIDを控え、クライアントシークレットを作成し、テナントIDを控えます。

構成:

  • Issuer URL: https://login.microsoftonline.com/YOUR_TENANT_ID/v2.0
  • Client ID: アプリケーション(クライアント)ID
  • Client Secret: 生成されたクライアントシークレット
  • Required Scopes: openid, profile, email
  • Redirect URI: http://YOUR_UNRAID_IP/graphql/api/auth/oidc/callback

認可ルールは、メールドメインまたはAdvancedクレームを使ってインターフェースで設定できます。

Keycloak

Keycloak Admin Consoleでopenid-connectプロトコルを使って新しい confidential client を作成し、Credentialsタブからクライアントシークレットをコピーします。

構成:

  • Issuer URL: https://keycloak.example.com/realms/YOUR_REALM
  • Client ID: unraid-api(またはKeycloakで設定した値)
  • Client Secret: KeycloakのCredentialsタブから取得
  • Required Scopes: openid, profile, email
  • Redirect URI: http://YOUR_UNRAID_IP/graphql/api/auth/oidc/callback

ロールベースの認可には、realm_access.rolesまたはresource_accessクレームを使ってAdvanced Modeを使用します。

Authentik

Authentikで新しいOAuth2/OpenID Providerを作成し、次にApplicationを作成してそれをプロバイダーにリンクします。

構成:

  • Issuer URL: https://authentik.example.com/application/o/<application_slug>/
  • Client ID: Authentikのプロバイダー設定から取得
  • Client Secret: Authentikのプロバイダー設定から取得
  • Required Scopes: openid, profile, email
  • Redirect URI: http://YOUR_UNRAID_IP/graphql/api/auth/oidc/callback

認可ルールは、インターフェースで設定できます。

Okta

Okta Admin Consoleで新しいOIDC Web Applicationを作成し、適切なユーザーまたはグループを割り当てます。

構成:

  • Issuer URL: https://YOUR_DOMAIN.okta.com
  • Client ID: Oktaのアプリケーション設定から取得
  • Client Secret: Oktaのアプリケーション設定から取得
  • Required Scopes: openid, profile, email
  • Redirect URI: http://YOUR_UNRAID_IP/graphql/api/auth/oidc/callback

認可ルールは、メールドメインまたはAdvancedクレームを使ってインターフェースで設定できます。