3

Azure ASP.NET MVC 3アプリケーションでOpenID認証を機能させようとしていますが、MVC3カスタムログインサンプルの手順に従って実行しています。開発環境ではすべて正常に機能しますが、Azureプラットフォームにデプロイした場合は機能しません。

最初の問題は認証で始まり、 「キーは指定された状態で使用するには無効です」というエラーが発生しました。ここでの説明では、デフォルトのDPAPIではなくRsaEncryptionCookieTransformを使用するようにアプリケーションを構成する必要があると述べています。これを解決するために、Alik LevinのブログOnServiceConfigurationCreatedに記載されているコードを追加しましたが、Azureではなく、開発中の自己署名証明書の設定(前述のとおり必要ではありません)について説明しているため、これ以上先に進みませんでした。

そのアプローチの代わりに、AzureにすでにあるX.509証明書を使用しようとしました。拇印は、WindowsAzure管理>アクセス制御サービス>証明書利用者アプリケーション>(マイアプリケーション名)>トークン署名証明書>サービス名前空間(X.509証明書)に使用されています。次に、この参照をweb.configに追加しました。

<serviceCertificate>
    <certificateReference x509FindType="FindByThumbprint" findValue="8A417..." />
</serviceCertificate>

アプリケーションの起動時に構成エラーが発生します。

ID1024:構成プロパティ値が無効です。
プロパティ名:'certificateReference'
エラー:'ID1025:条件に一致する一意の証明書が見つかりません。
StoreName:'My'
StoreLocation:'LocalMachine'
X509FindType:'FindByThumbprint'
FindValue: '8A417 ...''

「指定された状態で使用するにはキーが無効です」というエラーを解決するために、実際に暗号化方法を変更する必要がありますか?その場合、Azureに既に存在するX.509証明書を使用してCookieを暗号化するにはどうすればよいですか?

4

2 に答える 2

4

参照している証明書は、ACSで使用されるトークン署名証明書です。WIFがそれを使用してCookieを暗号化できるように(トークンとは関係ありません)、Webロールに証明書を展開する必要があります。WindowsAzureの展開に証明書を追加する必要があります。(サービス構成)。

http://claimsid.codeplex.comのサンプル#5を参照してください

これが概念実証であり、すべてのデフォルトで実行したい場合。ここを参照してください:http: //msdn.microsoft.com/en-us/library/ff966484.aspx#sec3

DPAPIが機能するように、「Load User Profile=true」を設定する必要があります。(これはおそらくローカルマシンにあるものです)。

于 2011-06-14T16:59:55.223 に答える
1

最終的に、(再び)Access ControlServicev2.0を使用したWindowsAzureWebロールASP.NETWebアプリケーションの保護に関する記事を見つけました。この記事に従って、web.configとACS管理ポータルの「RelyingParty Applications」セクションを再構成した後、すべてを機能させることができました。具体的には、このチュートリアルRequireAuthenticationのACS 2.0サンプルに示されているように、で装飾されたコントローラアクションのみに、ユーザのログインを要求する必要がありました。これで機能します。

唯一の欠点は、ユーザーエクスペリエンスをシームレスにするために、アプリ全体をSSLで実行する必要があることです。それ以外の場合、ユーザーはHTTPで実行しているときに認証を求められ、認証されてから、明らかに認証されていないHTTPにダンプされます。ただし、SSLエンドポイントに切り替えると、ユーザーは認証されました。

開発ファブリックでは、これは私が望むように機能していました。StackOverflowスタイルでは、証明書を使用せずにすべてを標準HTTPで実行でき、認証はSSLを介して行われました。ただし、AzureでのRSA cookie要件と証明書の必要性のため、これはクラウドでは機能しません。(開発ファブリックがこれや他の一般的な落とし穴について警告した場合は素晴らしいでしょう。)将来のある時点でこれを再検討したいと思います。

要約すると、提供されているサンプル以外のことを試す前に、WindowsIdentityFoundationとそれがAzureにどのように適用されるかを理解することをお勧めします。執筆時点で利用可能ないくつかのリソース:

于 2011-06-16T23:13:49.553 に答える