@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ASP.NET2.0 環境移行

投稿者投稿内容
momosute
会議室デビュー日: 2003/07/19
投稿数: 17
投稿日時: 2007-01-05 13:42
お世話になります。

ASP.NET2.0でのWEBアプリケーションをXP Proで開発。
本番用のサーバーへ作成した環境を移行したところ
(本番環境はWindows2003Server Std)
認証がうまく行かずログイン画面より先に進めません。
認証はroleManagerを使用しています。
(認証用のDBはSQL Server2005 ExpressEditionを使用)

多分、Config関係の設定かと思うのですが
色々調べたのですがServerの知識が無くさっぱりの状態です。
参考になるホームページやアドバイス等頂けたらと思います。

宜しくお願いいたします。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-01-05 13:57
> 色々調べたのですがServerの知識が無くさっぱりの状態です。

ASP.NETではサーバ(というか2003上のIISかな)の知識がなかったらまともに運用できませんね。
これを機会に勉強するのがよいと思います。

で、本題ですが、サーバ上にSQL Server 2005はインストールされているのでしょうか。
また、認証がうまくいかない、というのはどういう状況ですか?
エラーメッセージは表示されていませんか?
momosute
会議室デビュー日: 2003/07/19
投稿数: 17
投稿日時: 2007-01-05 14:25
返信ありがとうございます。
2003Serverに関する知識が社内に無いのに短納期で
さっきの投稿は納期だけが近くなってパニック状態でした。
すいません。。。

SQLサーバーはインストール済みです。
IISとSQLサーバーの設定はある程度終わっていると思っており、
ロール認証だけが通っていない状況と自分では考えています。
※認証は各ディレクトリにロール認証用のweb.confingを置いています。

以下が現在、確認済みの内容です。

1.DBには接続できている。

2.認証ページでユーザー認証はされている。
   DB登録済みのユーザーで正パスワードと誤パスワードを入力し確認。

3.ロール認証しているパスへの参照が拒否される。
   ロール認証していないパスのページへは普通に遷移出来ています。

4.認証拒否されたパスの認証を制御しているweb.configを
  全てのユーザーを許可すると参照できる。

5.ログイン画面から全てのロールを許可した状態で・・・
   ログインユーザーとロール名を表示するだけの簡単な画面を作成し
   ログイン画面から遷移してみたところユーザーとロールが表示されない。

※DBはテスト環境から移行したもので、
 テスト環境下では正常に動いている事を確認しています。

以上となります。


ログインの際にDBを見て間違いなくパスワードの確認は行っているので
DBへは接続に行っているのは間違いないと思うのですが、
5の状況からロールが認証されない⇒不適切なユーザーとなっている気がします。

現在はロール認証の仕組はXPで作ったDBをそのまま使用したのでは
2003では正常に動作しないのかを確認しているところです。

わかっている状況は以上なのですが、
何かアドバイスを頂けたらと思います。

宜しくお願いいたします。
momosute
会議室デビュー日: 2003/07/19
投稿数: 17
投稿日時: 2007-01-05 14:29
すいません。補足です。

エラーメッセージ等は出ません。
ログインボタンクリック後にロール認証出来なくて
POSTBACKされているようです。

ユーザーID・パスワードは正規のものなので、
間違いです等のメッセージは出ていません。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-01-05 14:46
ああ、ユーザ認証はできていて、ロールによる制限がうまく動いていない、
という状態なのですね。
この場合、サーバが2003だからといって問題は本来でないはずです。

一番あやしいのはweb.configのロールの有効化の設定かな?
web.configのsystem.web要素内に以下の記述は追加されていますでしょうか?
 <roleManager enabled="true" />
もしなかったら追加してみてください。
momosute
会議室デビュー日: 2003/07/19
投稿数: 17
投稿日時: 2007-01-05 15:02
お世話になります。

WEBアプリケーション直下のweb.configには
<roleManager enabled="true" /> は書いてあります。

同ファイルの中にあるmembershipのproviderを参照して
ログインユーザーの確認を行っているようですが
これは関係ありますでしょうか?
試しにコメントにしてみると認証自体もエラーになりますが、
・ユーザー認証をmembership providerで確認し、
・ディレクトリのロール権限は⇒roleManagerとそれぞれのweb.configで行う
との認識であっていますでしょうか?

※web.confingはXPで正常に動作していたものをそのままコピーし
 ディレクトリ名等の部分だけサーバー環境に併せて変更した状態です。


どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-01-05 16:51
うーん、たぶんweb.configの設定がどっかまずいんでしょうね。

ちなみに、
> 同ファイルの中にあるmembershipのproviderを参照して
> ログインユーザーの確認を行っているようですが
ということは、membershipのproviderについて独自に設定しているのでしょうか。
であれば、web.config内でroleManagerのproviderの設定も行わないといけないはず。
ここでずれてる可能性がありますね。
membershipのproviderをどう記述しているか提示してもらえますでしょうか。

DBの場所とかの設定の変更だったらconnectionStrings要素の中でLocalSqlServerの
設定を変更すればmembershipもroleManagerも同じDBを見に行ってくれます。
こちらのほうが楽なはず。
momosute
会議室デビュー日: 2003/07/19
投稿数: 17
投稿日時: 2007-01-10 12:08
返信ありがとうございます。

SQL Server2005 ExpressEdtion内にユーザー管理用のDBを作成
aspnet_regsqlでそのDBを見るように設定しています。

また、connectionString及びMembershipProviderとroleManagerは、
アプリケーション直下のweb.configで再設定しています。

MembershipProviderおよびroleManagerの設定は下記の通りです。

<roleManager enabled="false">
<providers>
<remove name="AspNetSqlRoleProvider" />
<add connectionStringName=[connectionString] applicationName="/"
name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>

<membership>
<providers>
<remove name="AspNetSqlMembershipProvider" />
<add connectionStringName=[connectionString] passwordFormat="Clear"
requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="3" minRequiredPasswordLength="3"
minRequiredNonalphanumericCharacters="0" enablePasswordReset="true"
name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>

また、

期間的に解決が難しい場合も想定してASPの認証を使用しない方向での検証も始めて
新たにわかったことなのですが、UserIDをSessionに持たそうとしたところ、
次ページへの遷移時にはSession情報が維持されるがその後の遷移では
SessionIdが変わってしまい情報の維持が出来なくなってしまいました。

通常は、何か無い限りはSessionIdは変わらないはずとの認識だったのですが
遷移のたびにSessionIdが変わってしまっているようです。
(テスト環境ではタイムアウトやログアウトなどが発生しない限り一緒でした)

セッションの保持をASP状態サービスを使用に変更して検証しても
同様の結果になってしまいました。

どこか根本的にサーバーの設定がいけないのでしょうか。。



スキルアップ/キャリアアップ(JOB@IT)