2

IIS7.5を搭載したWindowsServer2008でWebアプリケーションをホストしています。2つのWebアプリケーションがあります。1。最初のアプリケーションは、ログインページを備えたコアsso(シングルサインオン)サービスです。2.別のWebアプリケーションが、ssoの最初のアプリを使用する同じWebサーバーでホストされています。

WIF RTMを使用してssoを実装していますが、

通常、問題なく動作しています。ユーザーはログインしてssoをスローし、スタートページにリダイレクトできます。しかし、ログインして最初にssoをスローし、次にIISを再起動すると、2番目のアプリケーションに戻ってページを更新すると、次のエラーが発生します。

'/'アプリケーションのサーバーエラー。指定された状態での使用にはキーが無効です。説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーとエラーがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。

例外の詳細:System.Security.Cryptography.CryptographicException:指定された状態で使用するにはキーが無効です。

ソースエラー:現在のWebリクエストの実行中に、未処理の例外が生成されました。例外の発生源と場所に関する情報は、以下の例外スタックトレースを使用して識別できます。

スタックトレース:

[CryptographicException:キーは指定された状態での使用には無効です。]
System.Security.Cryptography.ProtectedData.Unprotect(Byte [] EncryptionData、Byte []optionalEntropy、DataProtectionScopeスコープ)+425
Microsoft.IdentityModel.Web.ProtectedDataCookieTransform.Decode(Byte []エンコード)+59

[InvalidOperationException:ID1073:ProtectedData APIを使用してCookieを復号化しようとしたときに、CryptographicExceptionが発生しました(詳細については、内部例外を参照してください)。IIS 7.5を使用している場合、これは、アプリケーションプールのloadUserProfile設定がfalseに設定されていることが原因である可能性があります。] Microsoft.IdentityModel.Web.ProtectedDataCookieTransform.Decode(Byte []エンコード)+151
Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ApplyTransforms(Byte [] cookie、ブールアウトバウンド)+109
Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(XmlReaderリーダー、SecurityTokenResolver tokenResolver)+634
Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(Byte []トークン、SecurityTokenResolver tokenResolver)+105
Microsoft.IdentityModel.Web.SessionAuthenticationModule.ReadSessionTokenFromCookie(Byte [] sessionCookie)+239
Microsoft.IdentityModel.Web.SessionAuthenticationModule.TryReadSessionTokenFromCookie(SessionSecurityToken&sessionToken)+59
Microsoft.IdentityModel.Web.SessionAuthenticationModule.OnAuthenticateRequest(オブジェクト送信者、EventArgs eventArgs)+52
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+68 System.Web.HttpApplication.ExecuteStep(IExecutionStep step、Boolean&completedSynchronously)+75

________________________________________バージョン情報:Microsoft .NET Frameworkバージョン:2.0.50727.4927; ASP.NETバージョン:2.0.50727.4927

ユーザーセッションはSQLServerセッションモードを使用して保存されます。このために特別なデータベースを使用しています。

何度も試しましたが、ローカルコンピューター(Windows7)でこの問題を再処理できません。誰かが同じような経験をしましたか?この問題を解決する方法を教えてください。

4

3 に答える 3

1

IIS 7.5 を使用する Win Server 2008 で複数のアプリが同じドメインを共有している場合、何らかのセキュリティ上の問題があるようです。

URL がhttp://ourdomain.com/app1ありhttp://ourdomain.com/app2、WIF を使用して 1 つのアプリにサインインできるが、他のアプリにアクセスするとこのエラーが発生する場合。これは、Cookie がドメイン用であるためですが、app1 によって作成された場合、app2 はそれにアクセスできません。

したがって、解決策は、Aaron のようにアクセス権を持つ特定のユーザーを使用するか、私たちが行ったように と の 2 つの異なるドメインにアプリを分離することhttp://app1domain.com/ですhttp://app2domain.com/

于 2010-02-23T16:29:43.747 に答える
0

これは、アプリケーション プール ユーザーに永続的なユーザー プロファイルがないことが原因である可能性があります。これを修正するには、そのユーザーとして何かを実行するだけです:

runas /user:<domain>\<user> cmd

これでプロファイルが作成されます。その後、IIS を再起動すると、データは復号化できるようになります。

于 2012-09-03T15:32:00.113 に答える