次の方法で共有


AD FS 2.0 サービスの開始に失敗する

この記事では、ADFS サービスの構成とスタートアップの問題のトラブルシューティング手順について説明します。

元の KB 番号: 3044973

まとめ

ADFS 2.0 の問題のほとんどは、次の主要なカテゴリのいずれかに属しています。 この記事には、ADFS サービスの問題をトラブルシューティングするための手順が含まれています。

現象

  • AD FS サービスが開始されません。

  • AD FS サービスが開始されますが、再起動後に AD FS 管理者ログに次のエラーが記録されます。

    • イベント ID: 220
      フェデレーション サービス構成を AD FS 構成データベースから正しく読み込めませんでした。
    • イベント ID: 352
      接続文字列 %1 の AD FS 構成データベースでの SQL Server 操作失敗しました。
    • イベント ID: 102
      フェデレーション サービスのエンドポイントを有効にするときにエラーが発生しました。

解決方法

この問題を解決するには、指定された順序で次の手順に従います。 これらの手順は、問題の原因を特定するのに役立ちます。 各手順の後に問題が解決されるかどうかを確認してください。

手順 1: 起動時に AD FS サービスがタイムアウトするかどうかを確認する

AD FS サービスの起動時にタイムアウトになると、次のエラー メッセージが表示されます。

そのサービスは指定時間内に開始要求または制御要求に応答しませんでした。

AD FS のサービス時間を修正する

ServicesPipeTimeout DWORD 値の値データを、Control キーの 60000 に変更します。 これを行うには、次の手順を実行します。

  1. AD FS サーバーで、レジストリ エディターを開きます。

  2. 次のレジストリ キーを見つけてクリックします。

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet

  3. Control サブキーをクリックします。

  4. ServicesPipeTimeout DWORD 値を右クリックし、Modify をクリックします。 ServicesPipeTimeout 値がない場合は、作成します。

  5. [decimalクリックします。

  6. 60000」と入力し、[ OK] をクリック。 このタイムアウト エラーの詳細については、「 AD FS 2.0: サービスの開始に失敗する: "サービスが開始要求または制御要求にタイムリーに応答しませんでした"を参照してください。

手順 2: AD FS 構成データベースが実行されているかどうかを確認する

  • AD FS 構成データベースとして Windows 内部データベース (WID) を使用している場合は、services.msc を開き、Windows 内部データベース サービスが実行されているかどうかを確認します。

  • SQL Server サービスを AD FS 構成データベースとして使用している場合は、services.msc を開きます。 SQL Server サービスが実行されているかどうかを確認します。 Test.udl ファイルを作成し、接続文字列を設定して Microsoft SQL Server への接続をテストすることもできます。

修正方法

Services.msc を開き、Windows 内部データベース サービスまたは SQL Server サービスを開始します。

構成データベースとして SQL Server を使用する AD FS サーバーの場合は、次のように 2 つのセキュリティ設定も確認する必要があります。

  1. SQL Management Studio を使用して、SQL Server を実行しているサーバーに接続します。

  2. Security>Logins ノードの SQL Server コンソールに AD FS 2.0 Windows サービス ID が存在するかどうかを確認します。 存在しなければ追加してください。

  3. AD FS 2.0 Windows サービス ID が Databases>AdfsConfiguration>Security>Users に存在し、 IdentityServerPolicy スキーマを所有しているかどうかを確認します。 存在しなければ追加してください。

手順 3: AD FS サービス アカウントを確認する

  1. AD FS サービスと IIS AppPool が有効なサービス アカウントで実行されているかどうかを確認します。 サービス アカウントのパスワードを変更した場合は、AD FS サービスと IIS AppPool で新しいパスワードが更新されていることを確認します。

    1. Services.msc を開き、AD FS 2.0 Service を右クリックし、Properties をクリックします。 [ Log on タブで、新しい AD FS サービス アカウントが [ アカウント ボックスに一覧表示されていることを確認します。

    2. IIS マネージャーを開き、アプリケーション プールに移動し、ADFSAppPool を右クリックし、[ Advanced 設定] をクリックします。 Process Model セクションで、新しい AD FS サービス アカウントが Identity として一覧表示されていることを確認します。

  2. サービス アカウントに AD FS データベースに十分なアクセス許可があるかどうかを確認します。 ADFS が実行されているサービス アカウントを変更した場合は、アクセス許可について心配する必要があります。

    構成サーバーとして SQL Server を使用している場合は、次の手順に従ってサービス アカウントのアクセス許可をリセットします。

    1. コマンド プロンプトで、次のコマンドを実行します。

      fsconfig.exe /CreateSQLScripts /ServiceAccount <ADFS service account> /ScriptDestinationFolder <path to create scripts>
      
    2. 作成したスクリプトを、SQL Server を実行しているサーバーにコピーします。

    3. サーバーでスクリプトを実行します。

  3. サービス アカウントが (CN=<GUID>,CN=ADFS,CN=Microsoft,CN=Program Data,DC=<Domain>,DC=<COM>) 証明書共有コンテナーに対する読み取りと変更のアクセス許可を持っているかどうかを確認します。

    1. ドメイン コントローラーで ADSIEDIT.msc を開きます。

    2. 既定の名前付けコンテキストに接続します。

    3. CN=<GUID>,CN=ADFS,CN=Microsoft,CN=Program Data,DC=<Domain>,DC=<COM> に移動します。 GUID の例として、62b8a5cb-5d16-4b13-b616-06caea706ada があります。

    4. GUID を右クリックし、 Properties をクリックします。 複数の GUID がある場合は、次の手順に従って、AD FS サービスを実行しているサーバーの GUID を見つけます。

      1. AD FS サービスを実行しているサーバーで、Windows PowerShell を起動します。

      2. 次のコマンドを実行します。

        Add-PSSnapin microsoft.adfs.powershell
        
        Get-ADFSProperties
        
      3. GUID は、 CertificateShareingContainer の下に表示されます。

  4. 新しいサービス アカウントに AD FS サービス通信証明書の秘密キーに対する読み取りアクセス許可があるかどうかを確認します。

    1. ローカル コンピューターの証明書ストアを対象とする証明書スナップインを使用して、Microsoft 管理コンソール (MMC) を作成します。
    2. MMC を展開し、[秘密キーの管理] 選択
    3. Security タブで、AD FS サービス アカウントを追加し、このアカウントに読み取りアクセス許可を付与します。
  5. AD FS サービス プリンシパル名 (SPN) HOST/ADFSServiceName がサービス アカウントの下に追加され、(サービス アカウントが変更された場合に備えて) 前のアカウントから削除されたかどうかを確認します。

    1. [ Command Prompt] を右クリックし、[ 管理者として実行] をクリックします。
    2. [SetSPN -f -q host/ <Federation service name>]と入力して、Enter キーを押します。

    このコマンドでは、 <Federation サービス名> は、AD FS サービス エンドポイントの完全修飾ドメイン名 (FQDN) サービス名を表します。 サービス名は、[ Federation サービスのプロパティ ] ダイアログ ボックスで確認できます。

    フェデレーション サービス名を示すフェデレーション サービス プロパティ ウィンドウのスクリーンショット。

    アカウントに SPN を追加または削除するには、次の手順に従います。

    1. ドメイン コントローラーで ADSIEDIT.msc を開きます。

    2. 既定の名前付けコンテキストに接続します。

    3. [ CN=Users,CN=Microsoft,CN=Program Data,DC=<Domain>,DC=<COM> に展開します。

    4. サービス アカウントを見つけます。 サービス アカウントを右クリックし、 Properties をクリックします。

    5. servicePrincipalName属性を見つけて、[編集] をクリック

    6. AD FS サービス SPN を追加または削除します。 AD FS サービス SPN の例を次に示します。

      HOST/newadfs.contoso.com

  6. サービス アカウントのパスワードを変更する場合は、新しいパスワードが AD FS サービスと IIS AD FS AppPool で更新されていることを確認します。

  7. AD FS サービス アカウントがローカル管理者グループに含まれているかどうかを確認します。 潜在的な問題を回避するには、AD FS サービス アカウントにローカル管理者権限を付与します。

手順 4: AD FS サービスを最新バージョンに更新する

次の更新プログラムがインストールされているかどうかを確認します。 インストールされていない場合は、インストールします。

手順 5: 断続的な AD FS サービスエラーを修正する

断続的な AD FS サービスエラーが発生した場合は、セキュリティ更新プログラムの2894844が適用された後に問題が開始されたかどうかを確認します。 このような状況では、AD FS は失敗し、外部ネットワークまたはフォーム ベースの通信を介してアクセスするときに参照番号を生成します。

セキュリティ更新プログラムの2894844が適用された後に問題が発生した場合は、「 Cause 1: Web アプリケーションがファーム (マルチサーバー環境) セクションで実行されている 表示状態メッセージ認証コード (MAC) エラーで説明されている問題が発生している可能性があります。

この問題を解決するには、すべての AD FS サーバーと AD FS プロキシに同じ静的マシン キーを設定します。

  1. IIS マネージャーで、adfs/ls フォルダーを見つけて開きます。
  2. [ASP.NET] セクションで、[ Machine Key をクリックします。
  3. 実行時に自動的に生成をオフにしアプリケーションごとに一意のキーを生成します Validation キーと Decryption キーの両方のチェック ボックスをオンにします。
  4. [キー 生成] をクリックします。
  5. [適用] をクリックします。
  6. 最初の AD FS サーバーから検証キーと復号化キーをコピーし、これらのキーを他のすべてのサーバーに貼り付けます。

手順 6: ADFS サービス通信、トークン署名、トークン暗号化解除の証明書が正しく構成されていることを確認する

詳細については、「 ADFS 2.0 証明書エラー: 証明書チェーンの構築中にエラーが発生しましたを参照してください。