2008-09-11 23 views
3

SOによって奨励された、私はユーザー認証のためにOpenIDを使用するASP.NETサイトを作成しようとしています。これは、正規のWinFormsサイト(MVC.NETではなく)で、認証のためにDotNetOpenIdライブラリを使用しています。私は単に、既知の(メンバーDotNetOpenId.RelyingParty、OpenIdEventArgs.Response.ClaimedIdentifierとして、OpenIdLogin_LoggedInイベントで返される)現在のセッションの「ClaimedID」を比較することにより、サイト上での管理機能を拒否/許可するためDotNetOpenIDでOpenIDを使用してASP.NETサイトの管理者を認証するセキュリティ保護された方法

は、それが安全です管理者のOpenID(すなわち私の)?

もしそうなら、このIDは(オープンソースコードなどで)見えるようにしても構いませんか、それとも設定ファイルやデータベースの行で「隠しておくべきですか? (私はそれを構成することが良い設計だと知っています、私の質問はちょうど安全性に関するものです)

+0

WinFormsではなくWebFormsを意味しましたか? –

答えて

2

Jarrettは、データベーステーブルの使用に関するいくつかの良いコメントを書いています。

あなたの質問の別の1つに答えるだけで、いいえ、あなたのコードにあなたのOpenIDを入れるのは秘密です。あなたのサイトの役割を過度に設定しすぎていると思われる場合、ClaimedIdentifierに対する単純な等価チェックが完璧です。

3

私のソリューションは、ロールテーブルの考え方に従います。ユーザーを認証したら、そのユーザーの役割をルックアップします。ユーザーがUserRolesテーブルでロール "Administrator"を持っている場合は、管理者が何でもできます。

私のアプリに公開IDは公開していません。それらはテーブルに保存されています。私は様々なユーザー状態情報を保存するように私も変更しているので、すべてのアクションの結果で、私はUsersテーブルを叩いています。ホームページを除いて、そのテーブルから必要なユーザー情報がいくつかあります。私はLINQを使用しているので、.LoadWith()をインクルードして、シリアライズ時にロールのリストをユーザーにロードします。

関連する問題