ASP.NET URLに”_” (アンダーバー)があるとフォーム認証に失敗する
ドリリウムは移転しました。
約5秒後に自動的にリダイレクトします。
ASP.NETのフォーム認証機能を使って認証を行っているWebアプリケーションで、開発用に立てたサーバーにアプリケーションを配置してみたところ、フォーム認証に失敗するようになってしまいました。
IISの設定やプログラムをよくよく確認しても原因らしきものは見つからず、HTTP通信を監視してみても、ただただ単純にフォーム認証に失敗してはじかれています。始めは何らかの理由で、フォーム認証は成功しているのに、認証後にログイン画面にリダイレクトされているのかと考えていたのですが、その線はなさそうです。
で、原因。
これまでも同様にサーバーに配置して動かしていましたが、問題はなかったのです。
何かサーバー側で変えたことがあるかと言われれば、バーチャルホストです。
これまでは、IPアドレスを使ってアプリケーションを動かしていました。
ブラウザで、http://IPアドレス/と打っていたわけです。しかし、流石に面倒になってきて、IISの設定から適当なホスト名をつけました、開発用だったため、「dev_name」という感じの名前です。nameはお客さんの名前。
僕はWeb系の経験がほとんどなく、あるにはあるのですが、こんな引っかかり方をしたのは初めてでした。
なぜアンダーバーがだめなのかはわかりませんが、「devname」や「dev-name」にすると全く問題なくフォーム認証が機能しました。HTTPリクエストかレスポンスで、アンダーバーが特殊な意味を持つんでしょうか・・・?
とにかく解決したし、アンダーバーを使う必要性もないのでこれでよしとします。