SharePoint 2010 のクレーム認証における名前解決の問題

SharePoint 2010 のクレーム認証における名前解決の問題

この問題をこれまでに何度か経験しているので、他の方々が経験された事例と合わせて検討すれば、問題の解決に役立つのではないかと考えました。筆者がこれまでに経験した事例では、名前の解決が正常に行われないことがありました。たとえば、入力コントロールに名前を入力し、[解決] (resolve) ボタンをクリックした場合などです。カスタム クレーム プロバイダーを開発した場合にデバッガーを接続して調べてみるとプロバイダーは正常に動作しているように見えますが、結局のところ、入力した名前の下に赤い波線が表示され、一致する項目が見つからないと警告されます。この問題はさらに広がりを示しており、既定のプロバイダーも正常に動作しないことがわかります。たとえば、「NT Authority/All Authenticated Users」と入力しても名前が解決されません。

何が起きているかと言えば、あるプロバイダーが、その FillResolve オーバーロードを呼び出されたとき、どこかで例外をスローしているということです。ここでとりわけ問題になるのは、最初に述べたことからも想像されるように、あるプロバイダーの不具合によってファーム内のすべての名前解決が停止する可能性があることです。したがって、既定のプロバイダーで名前を解決できないような状況が生じた場合には、まずカスタム プロバイダーを調べてください。おそらく、それらを削除する必要があります。自分で作成したプロバイダーでないときは、1 つ 1 つ順番に削除して問題のプロバイダーを見つけます。ただし、プロバイダーを再び戻したときにその順序が異なると、以前生成されていたのと同じ基本クレームが生成されなくなるという影響が生じます (これは一部のクレームが、プロバイダーを追加したときの順序に依存しているからです)。

しかし、ここでの主たる目的は、この問題が発生する状況を見極め、問題を解決する方法を明らかにすることにあります。

重要な結論 (必ずお読みください)

上で示したことから明らかなように、カスタム クレーム プロバイダーの開発者は、自分の作成するプロバイダーで例外を決してスローしないようにしなければなりません。例外をスローした場合、それはファーム内の名前解決を停止させるプロバイダーの不具合となるおそれがあります。問題の問い合わせを受ける側には誰もなりたくないでしょう。

これはローカライズされたブログ投稿です。原文の記事は、「Problems Resolving Claims Names in SharePoint 2010」をご覧ください。