2013-05-12 9 views
6

RESTベースのシステムでは、リソースIDを「暗号化」するオプションは何ですか?例えばRESTセキュリティリソースを公開するときの良い方法ID

/client/2 

/client/SOMEHASHKEY 

でアクセスできるようになり、私は思っています:

1 - リソースのIDを追跡するDBのテーブルを持っており、それは、対応するHASHだとすべてのリクエストでそれを参照してください。これは明らかに実装するのが非常に重いようであり、サーバーの作業をかなり増やします。

2 - それは(明らかに最適ではありませんが、あなたはポイントを得る)、リソースのIDとBASE64のリソースの作成日付に基づいてインスタンスのハッシュを作成し、内部の暗号化アルゴリズムのいくつかの種類を持っている

だからでありますこの種のシナリオの良い習慣?あなたは何をお勧めします ?

多くのおかげ

答えて

2

あなたの意図は、それがハードクライアントIDを推測するために行い、その後uuidsを使用し、そのよう21EC2020-3AEA-1069-A2DD-08002B30309D限りguids例えば32進文字になる場合。

ドメイン内のエンティティの識別は、完全にRESTサービスを提供する実装に依存します。

一部のアプリケーションでは、デフォルトでGUIDを使用してエンティティを識別します。良い例は、例えばlovefilm APIです:

GET /users/9D48675C-096F-11DC-BF5A-88D01745CE5C HTTP/1.1 
Host: openapi.lovefilm.com 

しかし、ハードに推測の識別子を使用して、不正なアクセスから保護し、実際の認証機構のための代替ではありませんしません。

+0

ハムそう、私はあなたの答えを取って、私の質問にそれを適用しようとすると、ハッシュ、GUIDまたは何かと実際のリソースの間のcorespondanceを追跡するためにテーブルを使用することを意味ですか? – silkAdmin

+0

アプリケーションがリソースをどのように格納するかによって異なります。アプリケーションの内部でリソースがどのように見えるかわかりません。しかし、内部的に整数IDに固執する必要がある場合は、クライアントモデルに別のGUIDプロパティを追加してください。ストレージがSQL DBテーブルの場合は、GUIDをクライアントテーブルの追加フィールドに格納します。 – stmllr

+0

私たちを "良い実践"の質問に戻すには、リソーステーブル自体にUUIDのインデックスを付ける必要があると思いますか? – silkAdmin

関連する問題