0

古い FormAuthentication.SetAuthCookie を使用する代わりに、SessionAuthenticationModule を使用してトークンを作成し、それを Cookie に書き込もうとしています。これは、プリンシパルにクレームを追加して、すべてのリクエストで利用できるようにするためです。

自分のコンピューターでは正常に動作しますが、サーバーにデプロイすると、次のエラーが発生します: 指定された引数が有効な値の範囲外でした。パラメータ名: keyExpirationTime

ソース: System.IdentityModel スタック トレースは、オーバーロードされたコンストラクターの 1 つを指しています。最初の呼び出しから TokenHandler を介して、次にいくつかのコンストラクターを介して CreateSessionSecurityToken を呼び出したようです。

私の SessionAuthenticationModule は私が自分で書いたクラスですが、System.IdentityModel.Services.SessionAuthenticationModule から派生し、OnPostAuthenticateRequest をオーバーライドします。

私はDateTime.NowとDateTime.Now.AddMinutes(20)をvalidFromとvalidToパラメータに送信しています(別のメモで、これは構成設定になることができますか?しかし、おそらくどこかにセキュリティ構成設定がありますか?)

このエラー メッセージを検索しましたが、それに関する記述が見つかりません。

私は FederationAuthentication.SessionAuthenticationModule.CreateSessionSecurityToken を使用し、HttpContext.Current.ApplicationInstance.Modules("SessionAuthenticationModule") も試しました - どちらも私の開発マシンでは動作しますが、サーバーでは動作しません。

サーバーには Windows 2008 R2 があり、私は Windows 7 Professional を持っています。どちらも IIS 7.5.7600.16385 を持っています。どちらも dotNetFx45_Full_setup.exe v4.5.50709.17929 を使用して .NET 4.5 がインストールされています。テストでは、統合パイプラインを備えた 64 ビット アプリ プールを使用する既定の Web サイトで仮想アプリを使用しています。両方のアプリ プールは AppPoolIdentity で実行されます。

CreateSessionSecurityToken は、セッション認証モジュールがクレームを追加した後に実行されるページから呼び出されます。

かなり単純なものになるはずですが、それが何であるかを理解するのに助けが必要です! 助けていただければ幸いです。

ありがとうフィル

4

1 に答える 1