2017-06-29 17 views
0

私はサービスを提供するためにasp.net WebAPIを使用します。しかし、私はエンティティ(リソースのアイデンティティ)のIDを探検するのが良い考えではないことがわかりました。WebAPIのエンティティのIDを保護または暗号化する最良の方法はありますか?

例えば、 UserProfile IDを渡してユーザーのプロファイルを取得した場合。 IDがDB内で自動インクリメントされるため、他人のプロファイルを取得するためにIDを繰り返しても、ユーザーのプロファイルが漏洩する可能性があります(GUIDを使用することを推奨しますが、int型IDの方がパフォーマンスが良い)

私は、WebAPIフィルターで時間とともにIDを暗号化したいと思います。これにはデモがありますか?

更新:ユーザーのデモで混同しないでください。製品がある場合。最初に商品リストを取得し、商品IDごとに商品詳細を取得します。プロダクトIDを証明する方法。

+1

なぜこれが欲しいですか?あなたのAPIは認証メカニズムを持っていませんか? – john

+0

OAuth Jwt認証を使用することができます – Nico

+0

クライアントが匿名でIDにアクセスできるようにしました。特別なユーザーではありません@john – huoxudong125

答えて

1

あなたはidを隠すべきではありませんが、あなたはそれをロールで制御できます。誰がリクエストしているかに基づいて、異なる量のプロパティを持つリソースを返します。

匿名の電話の場合は、何も返さず、公開されているデータのみを返すこともあります。

ユーザーがログインしている場合、多分他のユーザーに関するデータを見ることができます。

情報を要求している管理者の場合、さらに多くのデータを見ることができます。

ユーザーが自分自身に関する情報を要求している場合は、さらに多くのデータが必要です。

異なるレベルのアクセスポイントに異なるエンドポイントを設定して、APIを定義してドキュメント化する方が簡単な場合があります。たとえば、ユーザーが自分の情報を取得する場合は、/ user/meとなります。

関連する問題