スプリングネットワークセキュリティの概要
17117 ワード
この文章はSpring MVCプロジェクトに基づいている.
xml設定を使用します.
ソース:コード学習を使用したSpring Webプロジェクト
スプリング安全性はフィルタと防振器で動作します.
どちらもrequestを中間でフィルタします.
違いはフィルタは、スプリングに関係のないサーバリソースです. インターフェースはスプリングコンテキストで動作する. 様々な方法で
認証が可能です.
pom.xmlに次の依存性を追加します.
生成後、名前空間でセキュリティを確認します.
次にbeansラベルを次のように置き換えます.
フィルタをスプリング動作に参加させるため、web.xmlにフィルタを追加します.
web.xmlのcontext-paramのsecurity-context.xmlを追加します.
基本的なスプリングの安全設定が完了しましたので、動作を確認してみましょう.
まず3つのURIをマッピングするコントローラを作成します.
マッピングされたjspに、権限に一致する簡単なテキストを画面に表示させます.jsp生成が簡単すぎるので省略します.
Springsecurityは、認証と承認を支援します.
認証は自分を証明することです.
認められるのは他人に資格を与えられることだ.
話が難しいので、例を挙げます.
あなたはあるコミュニティのユーザーです.
いったん中に入って赤字を書くと、ログインします.
ログインする行為はあなた自身を証明することです.これは認証です.
あなたの権限は普通のプレイヤーなので、文章を登録/修正/削除することができます.
ただし、管理者ではないため、他の人が書いた特定の投稿を削除したり、
プレイヤーのipをブロックできません.
ある論理や人に普通のプレイヤーとして「認められる」ことで、その権限によって制限できる行為です.
この写真の中で一番上のAuthentication ManagerとProviderManager
そしてAuthenticationProviderを見てみましょう
認証担当のAuthentication ManagerはSpring Securityで最も重要です.AuthenticationManagerは、さまざまな方法で認証を処理することを目的としています.
ProviderManagerは、認証の処理をAuthenticationProviderに委任します.
AuthenticationManagerは、実際の認証操作を実行します.
認証された情報とともに、認証された情報を渡すことができます.
この操作は、UserDetailsServiceというインタフェースのインプリメンテーションによって実行されます.
ユーザーの情報とその権限を返します.
開発者がスプリングのセキュリティをカスタマイズする方法は2つあります.
直接実施認証プロバイダ 実施ユーザ詳細サービス 2つの方法に分けられ、通常は後者を使用します.
新しいプロトコルまたは認証実施形態を直接実施する場合、電子的にカスタマイズされる.
次に、ログインとログアウトの処理について学習します.
xml設定を使用します.
ソース:コード学習を使用したSpring Webプロジェクト
フィルタとインタフェース
スプリング安全性はフィルタと防振器で動作します.
どちらもrequestを中間でフィルタします.
違いは
認証が可能です.
セキュリティ設定
pom.xmlに次の依存性を追加します.
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>5.0.6.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-config -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>5.0.6.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-web -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>5.0.6.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-taglibs -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>5.0.6.RELEASE</version>
</dependency>
次はsecurity-contextxmlを生成します.生成後、名前空間でセキュリティを確認します.
次にbeansラベルを次のように置き換えます.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd" >
今でも設定の準備をしています.フィルタをスプリング動作に参加させるため、web.xmlにフィルタを追加します.
<!-- 스프링 시큐리티가 스프링 동작에 관여하도록 필터 설정 -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
プロジェクトを実行すると、springSecurityFilterChainという名前のスペースが見つからないというエラーが発生します.security-context.xmlに関する情報をspringにあげなかったからです.web.xmlのcontext-paramのsecurity-context.xmlを追加します.
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/root-context.xml
/WEB-INF/spring/security-context.xml
</param-value>
</context-param>
security-context.xmlに次の設定を追加します.<!-- 시큐리티의 시작지점 지정 -->
<security:http>
<security:form-login />
</security:http>
<!-- 스프링 시큐리티가 동작하려면 AuthenticationManager 라는 인터페이스가 필요함 -->
<security:authentication-manager>
</security:authentication-manager>
セキュリティ動作の確認
基本的なスプリングの安全設定が完了しましたので、動作を確認してみましょう.
まず3つのURIをマッピングするコントローラを作成します.
@RequestMapping("/sample/*")
@Controller
public class SampleController {
@GetMapping("/all")
public void doAll() {
System.out.println("모든 사람 접근 가능");
}
@GetMapping("/member")
public void doMember() {
System.out.println("member 만 접근 가능");
}
@GetMapping("/admin")
public void doAdmin() {
System.out.println("admin 만 접근 가능");
}
}
3つのURIにはそれぞれ異なるアクセス権があります.マッピングされたjspに、権限に一致する簡単なテキストを画面に表示させます.jsp生成が簡単すぎるので省略します.
認証と承認
Springsecurityは、認証と承認を支援します.
認証は自分を証明することです.
認められるのは他人に資格を与えられることだ.
話が難しいので、例を挙げます.
あなたはあるコミュニティのユーザーです.
いったん中に入って赤字を書くと、ログインします.
ログインする行為はあなた自身を証明することです.これは認証です.
あなたの権限は普通のプレイヤーなので、文章を登録/修正/削除することができます.
ただし、管理者ではないため、他の人が書いた特定の投稿を削除したり、
プレイヤーのipをブロックできません.
ある論理や人に普通のプレイヤーとして「認められる」ことで、その権限によって制限できる行為です.
スプリング内部のシンプルな構造。
この写真の中で一番上のAuthentication ManagerとProviderManager
そしてAuthenticationProviderを見てみましょう
認証担当のAuthentication ManagerはSpring Securityで最も重要です.AuthenticationManagerは、さまざまな方法で認証を処理することを目的としています.
ProviderManagerは、認証の処理をAuthenticationProviderに委任します.
AuthenticationManagerは、実際の認証操作を実行します.
認証された情報とともに、認証された情報を渡すことができます.
この操作は、UserDetailsServiceというインタフェースのインプリメンテーションによって実行されます.
ユーザーの情報とその権限を返します.
開発者がスプリングのセキュリティをカスタマイズする方法は2つあります.
直接実施
新しいプロトコルまたは認証実施形態を直接実施する場合、電子的にカスタマイズされる.
次に、ログインとログアウトの処理について学習します.
Reference
この問題について(スプリングネットワークセキュリティの概要), 我々は、より多くの情報をここで見つけました https://velog.io/@cksdnr066/스프링-웹-시큐리티-소개テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol