iOS 以外のユーザーの REST Web サービスへのアクセスを制限する方法があるかどうか疑問に思っていました。RESTful アプリケーションに Java と Jersey を使用しています。
この演習の目的は、Web サービスが XML データの POSTS を受け入れるため、交換を iphone クライアントに制限して、セキュリティ上の理由から xml の操作を防止することです。
クライアント側は弊社開発のiphoneアプリです。
(リクエストによりコメントから回答に移動しました)
いいえ。
iPhone からの TCP 接続は、他と何ら変わりはありません。その接続を介して「識別子」として受信するもの (たとえば、User-Agent 文字列) は、TCP 接続を確立できる他のデバイスによって生成できます。
あなたのコメントから:
デバイス トークンが iphone であるかどうか、つまり Apple デバイス ID であるかどうかを確認できる、ある種の検証サービスはありますか?
あったとしても...あなたは単に「あいまいさによるセキュリティ」を持っています。他のデバイスで行う必要があるのは、有効な ID を送信することだけです。何が送信されているのかわかりません。
厳密に言えば、いいえ - 他の人が言ったように。
ただし、
クライアント側は弊社開発のiphoneアプリです。
...そのアプリケーションと一緒に秘密鍵を出荷することができます。Apple が実施しているセキュリティを回避し、アプリをリバース エンジニアリングしてその鍵を手に入れる十分なインセンティブが誰もないことを願っています。
(この「セキュリティ」パターンは、DVD 暗号化、コンソール メーカーなどで惨めに失敗していることに注意してください。ただし、アプリの機密性が十分であり、保護しているデータがあまり価値がない場合は、それで十分かもしれません)。
そのキーを取得したら、ある種のチャレンジに基づいて REST サービスで認証を強制できます (最初のリクエスト、チャレンジ付きの 401、クライアントがプライベート キーでチャレンジに署名し、リクエストを繰り返して送り返す、サーバーが公開キーで検証します)。
次のようにコードでユーザー エージェントをチェックすると役立つ場合があります。
if(request.getHeader("User-Agent").indexOf("iphone") != -1){
//Execute some code
}