環境 :
Identity and Access Tool version 1.0.2
Visual Studio 2012
こんにちは。
前回の投稿に続き、謝罪の 2 つ目です。
まずは、今週月曜の「シングル・サインオンを使用したクラウド アプリケーション開発編」のハンズオン・ラボにご参加いただいた皆様、ありがとうございました。AD + AD FS 環境は、12 月中はそのまま置いておきますので、どうぞご活用ください。(Fiddler などで、どのような情報がやりとりされているか、ご確認ください。なお、説明の時間がなかったのですが、イントラからつないだ場合には、Windows 認証によってトークンが発行されて戻ってくるため、皆さんで確認したような Basic 認証、ダイジェスト認証や、フォーム認証などのログイン画面は表示されず、Windows のドメイン ユーザーを使って Web アプリケーションにログインできます。)
さて、このハンズオン・ラボでハマった、「呼び出しスレッドは、多数の UI コンポーネントが必要としているため、STA である必要があります」という意味不明なエラーについて、原因がわかりましたので記載します。(講師の私が一番ハマってましたが。。。)
結論を記載すると、Identity and Access Tool で、Realm や Return Url として下図のようなドメインのルートを登録する際は、必ず、最後にスラッシュ (Slash) を設定してください。(もちろん、本来は、Slash の有り / 無しは同じ Uri として識別されなければなりません。)
確か参加者の方が 1 名、「Slash が原因ではないか ?」とおっしゃっていたのですが、その通りでした。(「よもやそんなことは」と思ってましたが、すみません、それが原因でした。)
上図のように Slash なしで登録すると、いったん設定は成功しますが、その後、再度、Identity and Access Tool を起動して変更 (再設定) した際に、下図の通り、「呼び出しスレッドは、多数の UI コンポーネントが必要としているため、STA である必要があります」(The calling thread must be STA, because many UI components require this) というエラーが表示されます。
ハンズオンで説明した通り、Identity and Access Tool で設定をおこなうと、ツールが Windows Azure Access Control Service (ACS) に接続して、Relying Party や Rule の情報を設定します。
上記のような Slash なしの URL を登録すると、この ACS への登録では Slash ありの Audience としてちゃんと登録されますが、Web.config のほうには不明な URL として localhost のアドレスが登録されるようです。その結果、次に Identity and Access Tool を起動した際にマッチできず、以降、さまざまな動作上の不備が生じます。(上図のエラー以外に、Identity Provider も何も選択されていないなど、ツールの動きが明らかにおかしくなります。)
なお、このエラーが出てしまった場合には、Windows Azure の ACS (Access Control Service) に登録された証明書利用者アプリケーション (Relying party) と規則グループ (Rule Group) を削除して、再度、Slash ありで設定しなおしてください。(下図の通り、ACS の管理 Portal から削除できます。)
ちょっと不安定なツールというイメージを与えてしまったかもしれませんが、Identity and Access Tool は、上記を除けば、本来、非常に安定して使うことができますので、是非
(私も、これまで、何度も使っています。なぜか、ハンズオンのときに限って、こういう些細なバグに遭遇してしまうようです。。。)
Categories: Uncategorized