SharePoint アドイン製品一覧
SharePoint 2010 開発のステップ・バイ・ステップ
Windows Azure 入門
Windows Azure How-To 集
WCF / WF 入門
こんにちは。
09/08 に大森にて実施した MS-ON 出張ワークショップで、Principal を使った実装に関し、デモでうまく動作せず動作をお見せできなかった実装箇所について、以下、確認した結果を記載致します。(当日はデモをお見せできず申し訳ありません。)
該当のコード箇所ですが、自身のマシンのロールの場合、下記の通り、マシン名を記載せず ([マシン名]\Administrators とせずに) 以下の通り記載することで、ロールチェックを正しくおこないました。下記の通り記載すれば、PCにキャッシュされたド��インユーザでログインをおこなっても(ドメインサーバに接続していなくても)、そのマシンのロールは正しくチェックされました。
IPrincipal prin; // Principal オブジェクト
// Principal オブジェクトに、現在のユーザーの Windows アカウントをマップするAppDomain.CurrentDomain.SetPrincipalPolicy( PrincipalPolicy.WindowsPrincipal );
// 現在の Principal の参照prin = Thread.CurrentPrincipal;
// Principal の確認if(!prin.IsInRole("Administrators") ) return false;
ただし、一点だけ課題は残っています。デモでご覧頂いた通り、標準で組み込まれているWindows のPrincipal チェックをドメインサーバに接続していない状態で、ドメインのロールでチェックした場合は、アプリケーションエラーとなってしまいます。ですので、実開発の使用に際してもしこのリカバリをコードで実施する必要がある場合は、自身で、この確認をおこなう特別なコードが必要となってしまう点、ご注意ください。