0

Microsoft の定義済みテンプレートを使用して、Visual Studio で ASP.NET Web サイトを開始しました。これは、ASP.NET 内の OpenID について学習するのに役立ちます。

サンプル サイトに含まれている SQL データベース内には、UsersOpenAuthAccountsという列を含む というテーブルがありますProviderUserName

このコラムの目的を誰か教えてください。私のテストでは、これは OpenID サイトにログインするためのユーザー名を保存しているようです (例: 私の Google ユーザー名 - 私のメールアドレス)。ただし、列に値ProviderUserIdが保持されていることもわかります。IAuthenticationResponse.ClaimedIdentifier

https://www.google.com/accounts/o8/id?id=AIt................g3c

...これは、将来のリクエストのために OpenID プロバイダーに対してユーザーを識別するために使用されます。

したがって、ProviderUserName列を含める意味はありますか? Microsoft のサンプル サイト内の他の場所では実際には使用されていません。

4

1 に答える 1

1

ProviderUserName は... 悪い考えです (IMO)。

OpenID Claimed Identifier は、リターン ユーザーをチェックするための適切な文字列です。メールアドレスなど、他のものを使用するとセキュリティが低下します。OpenID ログインのみに関心がある場合は、ASP.NET が提供するコードを破棄し、DotNetOpenAuth をOpenIdRelyingParty直接使用して、users テーブルを自分で処理することをお勧めします。現在のコードとほぼ同じくらい単純になりますが、不要な列はありません。

ASP.NET チームの追加の列とファサード クラスが提供するものは、OpenID ログインと OAuth ログインを混在させる機能です。これにより、サイトで Twitter および Facebook アカウントも受け入れることができます。OAuth は認証プロトコルとして設計されていないため、これを使用する人は自分でユーザー名を考えなければなりません。それがグローバルに一意であるためには、そのユーザー名を発行しているプロバイダーによってプレフィックスが付けられる必要があります。そのため、ProviderName (「twitter」または「google」) と、OAuth サービス プロバイダーからのアカウントのユーザー名 (またはおそらくユーザー ID) である ProviderUsername があります。

于 2013-04-04T17:01:38.880 に答える