Japan Dynamics CRM Team Blog

Microsoft Dynamics CRM technical information for partners and customers

サービス プリンシパル名の登録 - トラブルシューティング

サービス プリンシパル名の登録 - トラブルシューティング

  • Comments 0

今回は、Kerberos 認証を使用するようにサービス プリンシパル名(SPN)を構成していない場合に発生する問題をトラブルシューティングします。

SPN が正しく構成されていない場合、CRM Web サイトにアクセスすると認証エラーが発生しますが、この認証エラーの原因を調査するためにネットワーク トレースが有効です。
また、Microsoft サポート技術情報 262177 に記載されているレジストリ値を設定すると Kerberos イベント ログを有効にすることができます。
ネットワーク トレースと Kerberos イベント ログを使用して、問題の原因を確認し、解決します。

構成情報

Windows Server 2003 を使用した場合です。

DC :
ホスト名:  AD01
IP アドレス: 192.168.16.1
DNS:  192.168.16.1

CRM :
ホスト名: CRM02
IP アドレス:  192.168.16.4
DNS:  192.168.16.1 

Windows XP クライアント:
ホスト名: XPPRO01
IP アドレス:  192.168.16.10
DNS:  192.168.16.1

ドメイン:
jpdemo.mscrm.com

CRM Web サイト URL:
http://crm02:5555

問題シナリオ

CRM アプリケーション プール アカウントを Network Service からドメイン ユーザーに変更します。
CRM Web サイトはネットワーク認証に Kerberos プロトコルと NTLM プロトコルの両方をサポートするように構成されています。

ポート : 5555
CRM サーバー : CRM02.jpdemo.mscrm.com
変更前アプリケーション プール アカウント :  Network Service
変更後アプリケーション プール アカウント :  jpdemo\crmservice

次の手順で CRM アプリケーションプールアカウントを変更します。
++++++++++++++++++++++++++++++++++++++++++
1. AD での作業
1) 新しいドメインユーザ jpdemo\crmservice を追加します。
2) 次の 2 つの CRM セキュリティグループに 1) で追加したユーザを登録します。

  • SQLAccessGroup{GUID}
  • PrivUserGroup{GUID}

2. CRM サーバーでの作業
1) CRM サーバーの次のグループに CRM アプリケーションプールのアカウントとして使用するユーザを追加します。

  • IIS_WPG
  • CRM_WPG

2) CRMアプリケーションプールアカウントを Network Service から jpdemo\crmservice に変更します。
CRMAppPool

CRM にアクセスします。
++++++++++++++++++++++++++++++++++++++++++
認証ダイアログが表示されます。正しいユーザー名、パスワードを入力しますが、再度認証ダイアログが表示されます。
3 回目にユーザー名、パスワードを入力した後に次のエラーが発生します。
HTTP Error 401.1 - Unauthorized: Access is denied

XPPop      XP401Error

KB262177 のレジストリ値を設定した場合は、次のエラーがクライアントのシステム イベント ログに表示されます。

XPEventLog


この問題をネットワーク トレースを使用してトラブルシュートします

1. ネットワーク トレースを起動します。
2. 名前解決キャッシュや保持された Kerberos チケットを削除します。

  • DNS 名前解決キャッシュを削除する場合は次のコマンドを使用します : >IPConfig /FlushDNS
  • NetBIOS 名キャッシュを削除する場合は次のコマンドを使用します : >NBTStat –R
  • Kerberos チケットを削除する場合はKList.exe を使用します:  >KList purge

    klist.exe は Resource Kit Tools に含まれており Windows Server 2003 Resource Kit Tools からダウンロードすることができます。

3. Internet Explore を起動し、CRM Web サイトにアクセスします。
4. HTTP Error 401.1 エラーが表示されたら、ネットワーク トレースを停止します。

採取されたネットワーク トレースを確認します

イベントログに出力されたエラー KRB_AP_ERR_MODIFIED (使用するネットワーク ユーティリティによっては KRB5KRB_AP_ERR_MODIFIED と表示される場合があります) をネットワーク トレース上でも確認できます。
このエラーは、サービスを実行しているアカウントが KDC (Key Disstribution Center) からクライアントに発行された Kerberos チケットを解読できなかった場合に表示されます。
ここでの「サービスを実行しているアカウント」は、CRM アプリケーション プール アカウントを指します。

このエラーが発生する原因はいくつかありますが、一般的には次のような原因が考えられます:

  • フォレスト内に同じ SPN を登録されたアカウントが存在する。
  • サービス プリンシパル名が、誤った Active Directory アカウント (コンピューター、またはユーザー) に登録されている。
  • サービスを実行している Active Directory アカウントが変更された、またはパスワードが変更されたが Active Directory レプリケーションの遅延、または障害により変更が反映されていない。

では、採取したネットワーク トレースを確認しましょう。
ここではInfo 列で Kerberos エラーを確認できますので WireShark を使用します。 

netmonlist

1. クライアント PC から CRM Web サーバーに対して http 接続を行い "401 Unauthorized" エラーが返ります。(フレーム 24、25)

2. ドメイン コントローラから TGT (Ticket-granting Ticket) を受け取ります( ASーREQ と ASーREP)。(フレーム 26、27)

3. クライアントから要求送信し、http/crm2 に対するサービス チケットを取得します。 (フレーム 28、29)
次のフレーム 29 の情報から、クライアントが http/crm2 の Kerberos チケットを取得したことを確認できます。

 

4. 次に、クライアントは Web サーバーに対して、発行された Kerberos チケットを使用して http://CRM02 を認証しようとしますが(フレーム 30 - 33) 、認証中に Web サーバーから KRB5KRB_AP_ERR_MODIFIED が返されます。(フレーム 33)

5. クライアントは、続けてもう 2 回ドメイン コントローラーからサービス チケット(TGS-REQ / TGS-REP) を取得しようとしますが、2 回とも同じエラー KRB5KRB_AP_ERR_MODIFIED が返されます。(フレーム 26-29、34-35、45-48)
ここで、3 回サービス チケットをドメイン コントローラーに要求するのを確認できます (TGS-REQ / TGS-REP) が、これは 401.1 unauthorized エラーが表示される場合に 3 回認証ダイアログが表示されたためです。

KRB5KRB_AP_ERR_MODIFIED は、サービスが Web サイトに接続しようとし Kerberos チケットを解読できなかったということを示しますが、その原因は既に紹介したように複数考えられます。
このシナリオでは、CRM アプリケーション プール アカウントをドメインユーザーに変更しましたが、変更後のユーザー アカウントに対する SPN の登録を行っていないことを思い出してください。

問題を解決します

ここからは、問題を解決していきます。
CRM アプリケーション プール アカウントは jpdemo\crmservice で、このユーザー アカウントに対して次の 2 つの SPN を登録する必要があります。

  • http/CRM02
  • http/CRM02.jpdemo.mscrm.com

SPN の登録を行う前に、これらの SPN が現在登録されていないか確認します。
ここではldifde を使用して、SPN を check_spn.txt に出力しました。

ADCommnd    ADCommandResult

CRM サーバーのコンピュータ アカウント CRM02 に SPN が登録されているため、コンピュータ アカウントに対して登録された 2 つの SPN を削除し、ドメイン ユーザー アカウント jpdemo\crmservice に対してこの 2 つの SPN を登録します。

SPN の登録、削除には setspn コマンドラインを使用します。

1. AD にサポートツールがインストールされていない場合には、OS の CD-ROM よりインストールします。
2. [スタート] - [すべてのプログラム] - [Windows Support Tools - Command Prompt] を起動します。
3. 次のコマンドを実行します。
SETSPN.exe -D http/<CRM サーバーコンピュータ名> <コンピュータアカウント>
SETSPN.exe -D http/<CRM サーバー FQDNフォーマット> <コンピュータアカウント>
SETSPN.exe -A http/<CRM サーバーコンピュータ名> <ドメイン名>\<ユーザアカウント>
SETSPN.exe -A http/<CRM サーバー FQDNフォーマット> <ドメイン名>\<ユーザアカウント>

SETSPN.exe -L <コンピュータアカウント>
SETSPN.exe -L <ドメイン名>\<ユーザアカウント>

setspn
Netbios 形式と FQDN 形式の両方で登録しているのは、どちらの形式でアクセスした場合にも対応できるようにするためです。

4. CRM Web サイトにアクセスしましょう。認証ダイアログは表示されず、401.1 エラーも解決されました。

XPCRMSuccess

- 参考情報 

Microsoft Network Monitor 3.3
http://www.microsoft.com/downloads/details.aspx?FamilyID=983b941d-06cb-4658-b7f6-3088333d062f&displaylang=en

Microsoft サポート技術情報 215383: ネットワーク認証に Kerberos プロトコルと NTLM プロトコルの両方を��ポートするように IIS を構成する方法 
http://support.microsoft.com/kb/215383/ja

情報元: Kerberos Authentication problems – Service Principal Name (SPN) issues - Part 3
http://blogs.technet.com/askds/archive/2008/06/09/kerberos-authentication-problems-service-principal-name-spn-issues-part-3.aspx

- Dynamics CRM サポート 斎藤 さち江

  • Loading...
Leave a Comment
  • Please add 2 and 8 and type the answer here:
  • Post