0

私はSpring MVCアプリに取り組んでいます。アプリの機能は、ajax ロジックを含む jsp が消費する ReST API を介してアクセスできます。定義された役割 (USER、COMPANY、ADMIN) で春のセキュリティを使用しています。メソッドは、次のような responseBody で requestMapping を使用します。

www.app.com/auth/{userId}/request/{requestId}

もちろん、リソースを取得するための GET と、その作成または更新のための POST をサポートしています。問題は、たとえば、userId = 1 でログインに成功した後、requestId = 99 で GET リクエストが必要なことです。しかし、Chrome 用の WebDev クライアントを実行すると、次の形式の簡単なリクエストで別のリソースにもアクセスできます。

www.app.com/auth/5/request/{requestId}

つまり、基本的には、私が見ることを許可されていないリソースにアクセスできます。私がどこに向かっているのか、あなたが理解したことを願っています。

私の質問は-これを保護するための最良のアプローチは何ですか? ログに記録されたユーザーID(整数)をセッションに保存し、リソースのリクエストが行われるたびに比較することを考えていましたが、ロープの間違った端を引っ張っているように思えます:)

アドバイスありがとうございます

4

1 に答える 1

0

春のセキュリティドキュメントの式ベースのアクセス制御セクションを確認する必要があります。

ドキュメントからコピーされた例:

  @PreAuthorize("#contact.name == authentication.name")
  public void doSomething(Contact contact) {
     ..
  }

これにより、連絡先の名前が現在ログインしているユーザーの名前と等しいかどうかがチェックされます。

この機能を使用すると、単純なロールよりもはるかに高度なアクセス ルールを作成できます。ただし、これはロールの使用を除外するものではありません。基本的なセキュリティ チェックのロールは引き続き保持できます。

于 2013-10-01T09:19:20.057 に答える