Javascriptフロントエンド+ Spring MVCプロジェクト(ユーザー管理の管理Webアプリケーション)でSpringセキュリティを使用します。これらのフロントエンドhtmlコードを特にjspに入れるセキュリティ上の利点があるかどうかを判断しようとしていました私のバックエンドコードと同じサーバーにあるので、私は特定のjspタグの恩恵を受けることができます。または、私はそれを完全にajaxアプリケーションにして、別のサーバーのフロントエンドに提供できますか?まだ春のセキュリティを完全に使用していますか?jspを使用しないSpringセキュリティ
答えて
ここで私は想定しています
- javascriptのフロントエンド
- セキュリティの観点では、主にJSON
にサービスを提供するSpring MVCのレストアプリケーション、春のセキュリティは唯一のバックを保護することができます。フロントエンドのセキュリティ(ブラウザビューでのリンクやコマンドの非表示)は、ユーザーがAjaxのものであっても常にリクエストを偽造できるため、幻想に過ぎません。
ユーザーエクスペリエンスの観点からは、決してユーザーに可能性を示すべきではないことが明らかであり、使用するときには許可されていないことを伝えてください。したがって、フロントエンドはユーザーに与えられる特権を知る必要があります。 Springセキュリティには、JSPページで使用できるサーバー側のタグがいくつか付属していますが、Javascriptフロントエンドでは、現在のユーザー機能を返す特別なURLサーバー側を実装する必要がありますか?認証し、結果をクライアントセッションにキャッシュします(Windows.sessionStorage
)。あなたのjavascriptコードは、特定のユーザに何を表示するべきかを知っています。
あなたのコントローラでAJAX JSONコールレベルを提供するリクエストURLを保護するためにスプリングセキュリティを使用できます。これが私の提案です。
機能やデータなどをJSフロントエンドで表示/非表示にする方法に関係なく、機能やデータを提供するJSON呼び出しをセキュリティで保護することが重要です。このようにして、たとえエンド・ユーザーがフロントエンドをハックしようとしたとしても、それは簡単なので、アクセス不足のためにRESTコールの実行に失敗することがあります。
「あなたはこのタグを使ってこのセキュリティを確保できますか?」という疑問が少しありますか?絶対に - コールレベルでのセキュリティが上記のように正しく処理されていることを確認してください。任意のフロントエンドで使用できる別のアプリケーションのように、REST/JSONサービスを構築する必要があります。
あなたはSpring Securityを使用してサーバー側を保護することができます。つまり、「完全にajaxアプリケーションにすることはできますか?」はい。
Ajaxアプリケーションの場合は、サーバー側をRESTfulなAPIにすることをお勧めします。その場合を想定します。
「セキュリティ」には、認証と認可の2つの要素があります。
認証とは、クライアントが実際に自分が主張していると確信できるように(ユーザーID 12345など)、いくつかの認証情報(キー、OAuthトークン、ユーザーとパスワードの組み合わせなど)を提供することを意味します。この認証は、アプリケーションによってセッションの一部として保持されます。 Httpはステートレスなので、サーバへのその後のリクエストはすべて、そのセッションの識別情報を送信する必要があるため、サーバはそれを探すことができます。 Spring Securityでの認証について知る必要があるのは、hereです。ユーザーの認証方法を知らなくても、私はより具体的にすることはできません。
承認はより簡単です。ユーザーID 12345はすべてにアクセスできない場合があります。彼は例えば/widgets/gidgets
にアクセスすることができますが、/widgets/fidgets
にはアクセスできません。そのためには、最も簡単な方法は@PreAuthorize
アノテーションです。詳細についてはhereをご覧ください。例は次のようになります。これは舞台裏、ない
@RestController
@RequestMapping("/widgets")
public class WidgetController{
@RequestMapping("/gidgets")
@PreAuthorize("hasRole('GIDGET_MANAGER')")
List<Gidget> getGidgets(){
return gidgetService.getGidgets();
}
@RequestMapping("/fidgets")
@PreAuthorize("hasRole('FIDGET_MANAGER')")
List<Fidget> getFidgets(){
return fidgetService.getFidgets();
}
}
何、それはパスに基づいて、要求をインターセプトしていることで、それが現在認証されたユーザが指定した名前を持つ役割を持っているかどうかを検証し、メソッドは肯定的な場合に実行することができます。それ以外の場合は、メソッドの実行を完全にスキップして、クライアントに401 UNAUTHORIZED応答を返します。
- 1. ログインページのセキュリティ(サーブレット/ JSPを使用)
- 2. JSPを使用しないSpring MVCフォームの例
- 3. OpenIdプロバイダを使用したJava Springセキュリティ
- 4. RESTアーキテクチャを使用したSpringセキュリティ
- 5. DynamoDBを使用したSpringセキュリティ認証
- 6. Springセキュリティを使用したFlask user auth
- 7. GSSネゴシエーションを使用したSpringセキュリティLDAP
- 8. SpringセキュリティRestTemplateを使用した認証
- 9. Springセキュリティを使用したSpringブートWebアプリケーションのセキュリティ保護が機能しない
- 10. Springセキュリティを使用したAngular JSアプリケーションのセキュリティ
- 11. jspを使用したSpringオブジェクトmvcを使用したドキュメントオブジェクト
- 12. SpringとSpringのセキュリティを使用したCASサーバーのネイティブ
- 13. JSPページでレンダリングされないスクリプトタグ(Spring + Tiles + JSPXを使用)
- 14. XWSSを使用したSpring WSセキュリティについて
- 15. Springセキュリティを使用してログインしたユーザーに条件付きでjspコンテンツを表示する方法
- 16. Spring WebFlux - JSPサポートなし?
- 17. Spring MVC。 JSPが動作しない
- 18. Spring MockMVCをカスタムSpringセキュリティで使用する方法WebSecurityConfigurerAdapter
- 19. SpringブートとSpringセキュリティでログアウトが機能しない
- 20. Jetty7スタンドアロン+ jstl/jsp + spring 3 = el/springタグが動作しない
- 21. SpringセキュリティOAuth2 - OAuth2Authenticationオブジェクトの使い方は?
- 22. Springセキュリティのログインユーザー名を使用してクエリを作成する
- 23. Spring MVCを使用してJSPでリストを表示
- 24. Spring MVCを使用してJSPにドキュメントを組み込む
- 25. Springを使用してJSPの値のリストを表示する
- 26. Springセキュリティ:SpringセキュリティがSessionRegistryに新しいセッションを登録する方法は?
- 27. Springセキュリティを使用したGrailsのワイルドカードによるURL傍受
- 28. Zuulプロキシを使用したSpringセキュリティOauth2 SSO
- 29. OAM(Oracle Access Manager)のSSO(Single Sign-On)を使用したSpringセキュリティ
- 30. Apache HTTPとSpringのセキュリティを使用した負荷分散
現在のユーザーに利用可能なURLを取得する方法はありますか? – Sumit