2012-01-24 2 views
0

私はASP.NETのWebサイトを開発しています。私は、認証されたユーザーが訪問することを許可されていることをWeb構成に設定する方法を知っているフォーム認証を使用する際の認証を確認するにはどうすればよいですか?

  1. :私は、認証/認可を保証するために、フォーム認証を使用する予定ですが、私は、認可に関する二つの問題に直面していますウェブページ(myPage.aspxなど)。しかし私は、UserAの情報ではなく自分の情報を取得するためにmyAにアクセスできることを定義する方法を知らない。 私はユーザーの認証時にトークンを生成することを考えていたので、このトークンの所在を確認して、この情報が利用可能かどうかを確認することができました。 このアプローチについてどう思いますか?フォーム認証はそのようなトークンを生成しますか? (私の研究ではそれについて何の言及も見つけられなかった)。そうでない場合は、フォーム認証メカニズムを生成するために適合させることができますか、それとも自分ですべてを書く必要がありますか?

  2. 私はwebservicesにアクセスしたいと思います。ユーザーがログに記録されている場合にのみ情報を返します。このため、上記と同じトークンを使用したいと思います。あなたはそれについてどう思いますか?それは良いアプローチですか?

私は認証/認可メカニズムの設計に経験がないので、これは私には尋ねられていますが、どんなヘルプ/ヒントも高く評価されます。

答えて

1

質問1については、ASP.Net Webフォームアプリケーションでフォーム認証が行われた後、ユーザーのIDがPage.User.IdentityプロパティのFormsIdentityオブジェクトとして公開されます。このオブジェクトには、ユーザーがサイトにログインするために使用するユーザー名を含むNameプロパティがあります。この値を使用して、ユーザーがアクセスできるものを制限できます。たとえば、あなたは、次のフィールドを含むユーザ情報を使用して、データベース内のテーブルを持っているとしましょう:

userId int 
userName varchar(25) 
...more fields containing user information... 

ユーザー名がページを等しくするこの表の行からのみのアクセス情報にユーザを制限することができます。 User.Identity.Nameプロパティ。直接ADO.Netを使用している場合、またはORMでマップされたドメインオブジェクト(つまり、nHibernateまたはEF)ドメインオブジェクトへのクエリを使用している場合。

質問2について、Page.User.Identityによって公開されるFormsIdentityオブジェクトには、ブール値 "IsAuthenticated"プロパティがあります。これを使用して、次のようにWebサービスへのアクセスを制限することができます。

if(Page.User.Identity.IsAuthenticated) 
{ 
    //Call your web service in a secure manner 
} 
+0

これは素晴らしいことですが、私は確かにそれを試みます。ちょうど1つの質問:私は私の友人のユーザー名を知っている場合、私はどういうわけか私のアカウントでログインしても、私の友人のものにユーザー名の値を変更することはできません? – JSBach

+0

いいえ、私はそれが可能であるとは思わない。 asp.netパイプラインは、成功したログイン時に生成する暗号化されたASP.Net認証Cookieの内容を抽出し、それを使用してPage.User.identityオブジェクトにデータを取り込むと考えています。このクッキーは暗号化されているので、それを改ざんすることはできません。 –

+0

それはまさに私が必要としていたものです!どうもありがとう :) – JSBach

関連する問題