3

SO に励まされて、ユーザー認証に OpenID を使用する ASP.NET サイトを作成しようとしています。これは、認証にDotNetOpenIdライブラリを使用する通常の WinForms サイト (MVC.NET ではない)です。

現在のセッションの "ClaimedID" (メンバー DotNetOpenId.RelyingParty,OpenIdEventArgs.Response.ClaimedIdentifier として OpenIdLogin_LoggedIn イベントで返される) を既知の管理者の OpenID (つまり、私の)?

もしそうなら、この ID を表示しても安全ですか (たとえば、オープン ソース コードで)、それとも構成ファイルまたはデータベース行で「非表示」にする必要がありますか? (構成可能にする方が良い設計であることはわかっています。私の質問は安全性に関するものです。)

4

2 に答える 2

3

私の解決策は、Roles テーブルと同じ考え方に従うことです。ユーザーを認証したら、そのユーザーの役割を検索します。ユーザーが UserRoles テーブルでロール「管理者」を持っている場合、管理者ができることは何でも実行できます。

アプリでオープン ID をブロードキャストしません。それらはテーブルに格納されます。さまざまなユーザー状態情報を格納するように私のテーブルも変更したため、すべてのアクションの結果で、Users テーブルをヒットしています。ホームページを除いて、そのテーブルから必要なユーザー情報がいくつかあります。私は LINQ を使用しているので、.LoadWith() を含めて、シリアライズ時に役割のリストをユーザーにロードします。

于 2008-09-11T16:38:42.987 に答える
2

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

別の質問に答えるために、いいえ、一般的に OpenID をコードに入れることは機密保持の問題ではありません。ロールの設定がサイトにとってやり過ぎだと思われる場合は、ClailedIdentifier に対する単純な同等性チェックが最適です。

于 2008-12-17T04:43:37.227 に答える