2016-04-11 5 views
1

現在、私は最初のREST Web APIを開発しようとしています!ベアラ認証を使用するASP.NET Web API。一意のユーザーデータを取得/追加/更新する方法

私は現在、どのようにシステムが動作するかを設計していますが、私は物事がどのように動作するのか少し混乱しています。

主に、モバイルアプリはウェブAPIであるを使用しますが、安全でなければなりません。

たとえば、私は未承認リクエストを一切処理したくありません。 (ユーザー登録以外)

このユーザー認証を実現するためにSSL +ベアラートークンを使用できることがわかりました。私はこれに慣れており、これがどのように機能するかをテストしました。それは適切です。

問題は、ユーザーの詳細を取得したいときに発生します。 私のシステムでは、ユーザはモバイルアプリケーションにログインし、トークンをサーバから要求します。すべてが良い場合は、ユーザーをアプリにログインさせることができます。すばらしいです!今、私は、このユーザについて保存された情報をそれらに提示する必要があります。名前、メール、報酬ポイントなど...

余分なユーザーデータを追加してWeb APIで取得する方法はよくわかりません。トークンを使用してユーザーを一意に識別できることを理解しています。このデータをどのように拡張できますか?

現在、ベアラトークン認証を実装した空のWebAPIプロジェクトはあまりありません。 Entityフレームワークを使用しています。ユーザーレコードにさらに多くのフィールドを追加するにはどうすればよいですか? さらに、これらのレコードをどのように更新できますか?たとえば、ユーザーはいくつかの報酬ポイントを得ていますが、そのためにユーザーデータをどのように更新できますか?

最後の質問ですが、これはユーザーごとのデータを保持するのに適していますか?つまり、他のデータをuserIDなどにリンクすることはできますか?過好奇心鳴らす

謝罪が、私はMVC

に非常に新しいですIdentityModel.csで以下のコードは、ユーザデータを追加するために、適切な場所のように思われるが、どのように私はこれに追加するには?報酬ポイントのフィールドを追加するなど?どのように私はそれを更新するだろうか?

私はそれを行うだろうか
public class ApplicationUser : IdentityUser 
    { 
     public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager, string authenticationType) 
     { 
      // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType 
      var userIdentity = await manager.CreateIdentityAsync(this, authenticationType); 
      // Add custom user claims here 
      return userIdentity; 
     } 
    } 
+0

ASP.NET IDを使用しているようです。私はあなたが[ガイド](http://www.asp.net/identity)を見て/作業することをお勧めします。 – Knelis

答えて

0

  • トークン検証しまうのActionFilterを作成し、それはDIを活用しますカスタムクラスを使用することになり、それは明らかにも

  • ユーザーIDになるだろう
  • ユーザーは認証されており、このユーザーIDに基づいて通常のCRUDを実行するだけです。

注:私がPUT: /user/887/points {points: 999}を送った場合、無制限のポイントを得る可能性があるため、ペイロードの検証も忘れないでください。

+0

OPがASP.NET IDを使用しているようですので、トークンを検証するために独自のフィルタを作成する必要はありません。彼らは '[Authorize]'と 'User'プロパティをコントローラで使うことができます。 – Knelis

+0

@Knelis Yeaそれは問題ありません。私は自分自身を使うことを好みますが、実装するのは難しくありません。それは私の道をよりコントロールし、あまり「魔法」にしません。だからこそ私は**私はそれをやるだろうと書いた:**最初は。 – sed

+0

これを実装する方法の例がありますか?FilterConfig.csにフィルタを追加するように指示していますが、これはどのようにソリューションをカプセル化しますか? – Harvey

0

Web APIプロジェクトでセキュリティを実装するためにASP .NET IDを使用する必要はありません。

アイデンティティを使用する場合は、要件を満たすことができないユーザー管理のために、「ApplicationUser」とIDテーブルを固執する必要があります。

解決策は、独自のカスタムテーブルを使用してユーザー管理を処理し、.NETで使用可能なOWINミドルウェアクラスを使用してセキュリティを実装することです。つまり、Identityを使用するのではなくトークンを生成および検証するコードを記述する必要があります。

関連する問題