SpringSecurityリファレンスマニュアル



Spring Security Reference Manual



安全なデータベーススキーマ

使用されるフレームワークがあり、この付録は単一の参照ポイントを提供し、それらにすべての異なるデータベーススキーマを提供します。必要なパーツの機能テーブルを提供するだけで済みます。

DDLステートメントはHSQLDBデータベースを提供します。これらは、使用しているデータベースのアーキテクチャーを定義するためのガイドラインとして使用できます。



ユーザーモード

JDBC標準が実装されていますUserDetailsServiceJdbcDaoImpl)ユーザーのテーブル読み込みパスワード、アカウントステータス(使用可能または使用不可)、および電源リスト(役割)が必要です。使用しているデータベース言語に一致するように、このアーキテクチャを調整する必要があります。

create table users( username varchar_ignorecase(50) not null primary key, password varchar_ignorecase(50) not null, enabled boolean not null ) create table authorities ( username varchar_ignorecase(50) not null, authority varchar_ignorecase(50) not null, constraint fk_authorities_users foreign key(username) references users(username) ) create unique index ix_auth_username on authorities (username,authority)

グループ組織

Spring Security2.0では現在のグループサポートが導入されていますJdbcDaoImplグループがテーブルを有効にする場合、構造は次のようになります。使用しているデータベース言語に一致するように、このスキーマを調整する必要があります。



create table groups ( id bigint generated by default as identity(start with 0) primary key, group_name varchar_ignorecase(50) not null ) create table group_authorities ( group_id bigint not null, authority varchar(50) not null, constraint fk_group_authorities_group foreign key(group_id) references groups(id) ) create table group_members ( id bigint generated by default as identity(start with 0) primary key, username varchar(50) not null, group_id bigint not null, constraint fk_group_members_group foreign key(group_id) references groups(id) )

これらのテーブルでは、提供されているJDBC UserDetailsService実装のみを使用する必要があることに注意してください。書くか、実装することを選択した場合AuthenticationProviderいいえUserDetailsServiceそして、インターフェースの契約が満足のいくものである限り、データを完全に自由に保存できます。

継続的なログイン(覚えておいてください)スキーマ

このテーブルは、より安全に使用するためにデータを保存するために使用されます 永続トークン 覚えておいてください-私の実装。 JdbcTokenRepositoryImplを直接使用する場合でも、名前空間を介して使用する場合でも、このテーブルが必要になります。使用しているデータベース言語に一致するように、このスキーマを調整することを忘れないでください。

create table persistent_logins ( username varchar(64) not null, series varchar(64) primary key, token varchar(64) not null, last_used timestamp not null )

ACLスキーマ

SpringSecurityが使用するテーブルは4つあります ACL 実装。



  1. acl_sid店舗の身​​元確認とセキュリティはALCシステムによって保証されており、ALCシステムは単独または複数の責任者に適用できます。

  2. acl_classドメインのオブジェクトタイプを定義するACLアプリケーション。 A class列には、Javaクラスのオブジェクト名が格納されます。

  3. acl_object_identity保存されている特定のドメインオブジェクトのロゴの定義。

  4. acl_entry保存されたACL権限は、特定のオブジェクトIDとセキュリティIDに適用されます。

データベースが各IDの主キーを自動的に生成することを前提としています。 A JdbcMutableAclService新しい行を作成したときにこれらを取得できる必要がありますacl_sidまたはacl_classテーブル。これらの値を取得する必要があるSQLを定義する2つの属性がありますclassIdentityQuery sidIdentityQueryで。これらの2つのデフォルトcall identity()

JRCを作成するためのACL処理には、Hypersql作成ACLモード(HSQLDB)、PostgreSQL、MySQL / MariaDB、Microsoft SQL Server、およびOracleデータベースのファイルが含まれます。これらのアーキテクチャは、次のセクションでも証明されています。

HyperSQL

デフォルトアーキテクチャの作業では、単体テストフレームワークに組み込まれたHSQLDBデータベースを使用します。

create table acl_sid( id bigint generated by default as identity(start with 100) not null primary key, principal boolean not null, sid varchar_ignorecase(100) not null, constraint unique_uk_1 unique(sid,principal) ) create table acl_class( id bigint generated by default as identity(start with 100) not null primary key, class varchar_ignorecase(100) not null, constraint unique_uk_2 unique(class) ) create table acl_object_identity( id bigint generated by default as identity(start with 100) not null primary key, object_id_class bigint not null, object_id_identity bigint not null, parent_object bigint, owner_sid bigint, entries_inheriting boolean not null, constraint unique_uk_3 unique(object_id_class,object_id_identity), constraint foreign_fk_1 foreign key(parent_object)references acl_object_identity(id), constraint foreign_fk_2 foreign key(object_id_class)references acl_class(id), constraint foreign_fk_3 foreign key(owner_sid)references acl_sid(id) ) create table acl_entry( id bigint generated by default as identity(start with 100) not null primary key, acl_object_identity bigint not null, ace_order int not null, sid bigint not null, mask integer not null, granting boolean not null, audit_success boolean not null, audit_failure boolean not null, constraint unique_uk_4 unique(acl_object_identity,ace_order), constraint foreign_fk_4 foreign key(acl_object_identity) references acl_object_identity(id), constraint foreign_fk_5 foreign key(sid) references acl_sid(id) )

PostgreSQL

create table acl_sid( id bigserial not null primary key, principal boolean not null, sid varchar(100) not null, constraint unique_uk_1 unique(sid,principal) ) create table acl_class( id bigserial not null primary key, class varchar(100) not null, constraint unique_uk_2 unique(class) ) create table acl_object_identity( id bigserial primary key, object_id_class bigint not null, object_id_identity bigint not null, parent_object bigint, owner_sid bigint, entries_inheriting boolean not null, constraint unique_uk_3 unique(object_id_class,object_id_identity), constraint foreign_fk_1 foreign key(parent_object)references acl_object_identity(id), constraint foreign_fk_2 foreign key(object_id_class)references acl_class(id), constraint foreign_fk_3 foreign key(owner_sid)references acl_sid(id) ) create table acl_entry( id bigserial primary key, acl_object_identity bigint not null, ace_order int not null, sid bigint not null, mask integer not null, granting boolean not null, audit_success boolean not null, audit_failure boolean not null, constraint unique_uk_4 unique(acl_object_identity,ace_order), constraint foreign_fk_4 foreign key(acl_object_identity) references acl_object_identity(id), constraint foreign_fk_5 foreign key(sid) references acl_sid(id) )

個別に設定する必要がありますclassIdentityQuerysidIdentityQueryパフォーマンスJdbcMutableAclService次の値:

  • select currval(pg_get_serial_sequence('acl_class', 'id'))

  • select currval(pg_get_serial_sequence('acl_sid', 'id'))

MySQLとMariaDB

CREATE TABLE acl_sid ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, principal BOOLEAN NOT NULL, sid VARCHAR(100) NOT NULL, UNIQUE KEY unique_acl_sid (sid, principal) ) ENGINE=InnoDB CREATE TABLE acl_class ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, class VARCHAR(100) NOT NULL, UNIQUE KEY uk_acl_class (class) ) ENGINE=InnoDB CREATE TABLE acl_object_identity ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, object_id_class BIGINT UNSIGNED NOT NULL, object_id_identity BIGINT NOT NULL, parent_object BIGINT UNSIGNED, owner_sid BIGINT UNSIGNED, entries_inheriting BOOLEAN NOT NULL, UNIQUE KEY uk_acl_object_identity (object_id_class, object_id_identity), CONSTRAINT fk_acl_object_identity_parent FOREIGN KEY (parent_object) REFERENCES acl_object_identity (id), CONSTRAINT fk_acl_object_identity_class FOREIGN KEY (object_id_class) REFERENCES acl_class (id), CONSTRAINT fk_acl_object_identity_owner FOREIGN KEY (owner_sid) REFERENCES acl_sid (id) ) ENGINE=InnoDB CREATE TABLE acl_entry ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, acl_object_identity BIGINT UNSIGNED NOT NULL, ace_order INTEGER NOT NULL, sid BIGINT UNSIGNED NOT NULL, mask INTEGER UNSIGNED NOT NULL, granting BOOLEAN NOT NULL, audit_success BOOLEAN NOT NULL, audit_failure BOOLEAN NOT NULL, UNIQUE KEY unique_acl_entry (acl_object_identity, ace_order), CONSTRAINT fk_acl_entry_object FOREIGN KEY (acl_object_identity) REFERENCES acl_object_identity (id), CONSTRAINT fk_acl_entry_acl FOREIGN KEY (sid) REFERENCES acl_sid (id) ) ENGINE=InnoDB

Microsoft SQL Server

CREATE TABLE acl_sid ( id BIGINT NOT NULL IDENTITY PRIMARY KEY, principal BIT NOT NULL, sid VARCHAR(100) NOT NULL, CONSTRAINT unique_acl_sid UNIQUE (sid, principal) ) CREATE TABLE acl_class ( id BIGINT NOT NULL IDENTITY PRIMARY KEY, class VARCHAR(100) NOT NULL, CONSTRAINT uk_acl_class UNIQUE (class) ) CREATE TABLE acl_object_identity ( id BIGINT NOT NULL IDENTITY PRIMARY KEY, object_id_class BIGINT NOT NULL, object_id_identity BIGINT NOT NULL, parent_object BIGINT, owner_sid BIGINT, entries_inheriting BIT NOT NULL, CONSTRAINT uk_acl_object_identity UNIQUE (object_id_class, object_id_identity), CONSTRAINT fk_acl_object_identity_parent FOREIGN KEY (parent_object) REFERENCES acl_object_identity (id), CONSTRAINT fk_acl_object_identity_class FOREIGN KEY (object_id_class) REFERENCES acl_class (id), CONSTRAINT fk_acl_object_identity_owner FOREIGN KEY (owner_sid) REFERENCES acl_sid (id) ) CREATE TABLE acl_entry ( id BIGINT NOT NULL IDENTITY PRIMARY KEY, acl_object_identity BIGINT NOT NULL, ace_order INTEGER NOT NULL, sid BIGINT NOT NULL, mask INTEGER NOT NULL, granting BIT NOT NULL, audit_success BIT NOT NULL, audit_failure BIT NOT NULL, CONSTRAINT unique_acl_entry UNIQUE (acl_object_identity, ace_order), CONSTRAINT fk_acl_entry_object FOREIGN KEY (acl_object_identity) REFERENCES acl_object_identity (id), CONSTRAINT fk_acl_entry_acl FOREIGN KEY (sid) REFERENCES acl_sid (id) )

Oracleデータベース

CREATE TABLE acl_sid ( id NUMBER(38) NOT NULL PRIMARY KEY, principal NUMBER(1) NOT NULL CHECK (principal in (0, 1)), sid NVARCHAR2(100) NOT NULL, CONSTRAINT unique_acl_sid UNIQUE (sid, principal) ) CREATE SEQUENCE acl_sid_sequence START WITH 1 INCREMENT BY 1 NOMAXVALUE CREATE OR REPLACE TRIGGER acl_sid_id_trigger BEFORE INSERT ON acl_sid FOR EACH ROW BEGIN SELECT acl_sid_sequence.nextval INTO :new.id FROM dual END CREATE TABLE acl_class ( id NUMBER(38) NOT NULL PRIMARY KEY, class NVARCHAR2(100) NOT NULL, CONSTRAINT uk_acl_class UNIQUE (class) ) CREATE SEQUENCE acl_class_sequence START WITH 1 INCREMENT BY 1 NOMAXVALUE CREATE OR REPLACE TRIGGER acl_class_id_trigger BEFORE INSERT ON acl_class FOR EACH ROW BEGIN SELECT acl_class_sequence.nextval INTO :new.id FROM dual END CREATE TABLE acl_object_identity ( id NUMBER(38) NOT NULL PRIMARY KEY, object_id_class NUMBER(38) NOT NULL, object_id_identity NUMBER(38) NOT NULL, parent_object NUMBER(38), owner_sid NUMBER(38), entries_inheriting NUMBER(1) NOT NULL CHECK (entries_inheriting in (0, 1)), CONSTRAINT uk_acl_object_identity UNIQUE (object_id_class, object_id_identity), CONSTRAINT fk_acl_object_identity_parent FOREIGN KEY (parent_object) REFERENCES acl_object_identity (id), CONSTRAINT fk_acl_object_identity_class FOREIGN KEY (object_id_class) REFERENCES acl_class (id), CONSTRAINT fk_acl_object_identity_owner FOREIGN KEY (owner_sid) REFERENCES acl_sid (id) ) CREATE SEQUENCE acl_object_identity_sequence START WITH 1 INCREMENT BY 1 NOMAXVALUE CREATE OR REPLACE TRIGGER acl_object_identity_id_trigger BEFORE INSERT ON acl_object_identity FOR EACH ROW BEGIN SELECT acl_object_identity_sequence.nextval INTO :new.id FROM dual END CREATE TABLE acl_entry ( id NUMBER(38) NOT NULL PRIMARY KEY, acl_object_identity NUMBER(38) NOT NULL, ace_order INTEGER NOT NULL, sid NUMBER(38) NOT NULL, mask INTEGER NOT NULL, granting NUMBER(1) NOT NULL CHECK (granting in (0, 1)), audit_success NUMBER(1) NOT NULL CHECK (audit_success in (0, 1)), audit_failure NUMBER(1) NOT NULL CHECK (audit_failure in (0, 1)), CONSTRAINT unique_acl_entry UNIQUE (acl_object_identity, ace_order), CONSTRAINT fk_acl_entry_object FOREIGN KEY (acl_object_identity) REFERENCES acl_object_identity (id), CONSTRAINT fk_acl_entry_acl FOREIGN KEY (sid) REFERENCES acl_sid (id) ) CREATE SEQUENCE acl_entry_sequence START WITH 1 INCREMENT BY 1 NOMAXVALUE CREATE OR REPLACE TRIGGER acl_entry_id_trigger BEFORE INSERT ON acl_entry FOR EACH ROW BEGIN SELECT acl_entry_sequence.nextval INTO :new.id FROM dual END

安全な空間

この付録では、セキュアな名前空間で使用可能な要素と、それらが作成する要素に基づく情報への参照を提供します(個々のクラスの知識、およびプロジェクトでより多くの情報とjavadocを見つけることができると仮定して、それらがどのように連携するか)。これまでに名前空間を使用したことがない場合は、このセクションをお読みください。 入門章 名前空間の構成は、補足情報として使用されます。スキーマベースの構成提案を編集するときは、高品質のXMLエディターを使用してください。これにより、要素と属性に関するコンテキスト情報が提供され、それらの目的が説明されます。名前空間はで書かれています RELAX NG コンパクトフォーマットは後にXSDアーキテクチャに変換されました。この形式に精通している場合は、確認することをお勧めします。 A スケジュールファイル 直接。

Webアプリケーションのセキュリティ

SpringSecurityデバッグインフラストラクチャを有効にします。これにより、セキュリティフィルタ要求を監視するための読み取り可能な(複数行の)デバッグ情報が人間に提供されます。これには、リクエストパラメータやヘッダーファイルなどの機密情報が含まれる場合があり、開発環境でのみ使用されます。

アプリケーションでElementsを使用できる場合FilterChainProxy Beanは「springSecurityFilterChain」と呼ばれ、要素内の構成を使用して内部でフィルターチェーンを構築しますFilterChainProxy。 Spring Security 3.1以降、additional http要素を使用して、フィルターチェーンの脚注を追加できます。 入門章 マッピングを作成しますweb.xml]。一部のコアフィルターは、常にフィルターチェーンで作成されます。現在の属性とサブ要素に応じて、他のコアフィルターがスタックに追加されます。標準フィルターの位置は固定されています(を参照) フィルタ順序テーブル 名前空間の導入で、ユーザーがフレームワークFilterChainProxy Beanでフィルターチェーンを明示的に構成するときに、以前のバージョンのフレームワークで共通のエラーソースを削除します。構成を完全に制御する必要がある場合でも、それを行うことができます。

すべてのフィルターを参照する必要がありますAuthenticationManager名前空間構成によって作成された内部インスタンスに自動的に挿入されます(を参照) 入門章 詳細AuthenticationManager)。 eachNamespaceブロックは、常に1つSecurityContextPersistenceFilter、1つExceptionTranslationFilterおよびa FilterSecurityInterceptorを作成します。これらは修正されており、代替品に置き換えることはできません

属性

の属性要素は、コアフィルターのいくつかの属性を制御します。

  • access-decision-manager-refオプションの属性指定AccessDecisionManager実装は許可されたHTTPリクエストに使用する必要があります。デフォルトを介してAffirmativeBased実装はa RoleVoter with AuthenticatedVoterで使用されます。

  • authentication-manager-ref参照用AuthenticationManager使用目的FilterChainこのHTTP要素を介して作成されます。

  • 自動設定自動登録とログインフォーム、基本認証、ログアウトサービス。 'true'に設定すると、これらすべての機能が追加されます(ただし、対応する要素を指定することで、各要素の構成をカスタマイズできます)。指定しない場合、デフォルトは「false」です。この属性は推奨されません。混乱を避ける代わりに、明示的な構成要素を使用してください。

  • 作成セッション以下を含む、SpringSecurityクラスの作成を制御します。

    • always -Spring Securityが存在しない場合、積極的にセッションを作成します。

    • ifRequired -Spring Securityは、必要な場合にのみ1つのセッションを作成します(デフォルト)。

    • never -Spring Securityがセッションを作成することはありません。アプリケーションの場合は、セッションを使用します。

    • stateless -Spring Securityはセッションを作成せず、セッションを取得するSpringのセッションを無視します。 A Authentication

  • disable-url-rewritingセッションIDがアプリケーションのURLに追加されないようにします。クライアントはこのプロパティを使用してtrueデフォルト値はtrueに設定する必要があります。

  • エントリポイント参照通常AuthenticationEntryPoint使用は、構成された認証メカニズムによって異なります。この属性は、カスタムオーバーライドを定義することでこの動作を可能にしますAuthenticationEntryPoint Beanこれにより、認証プロセスが開始されます。

  • jaas-api-provision可能な場合は、リクエストを次のように実行しますSubject取得済みJaasAuthenticationTokenこれは、a JaasApiIntegrationFilter Beanをスタックに追加することによって行われます。デフォルト値はfalseです。

  • 名前コンテキスト内の他の場所でBeanを参照するために使用されるBean識別子。

  • リクエストごとに1回observeOncePerRequestプロパティFilterSecurityInterceptorに対応します。デフォルト値はtrueです。

  • パターンパターンを定義する http この要素は、フィルタリングされるリクエストが通過するフィルタのリストを制御します。説明は構成によって異なります リクエストマッチャー パターンが定義されていない場合、すべてのリクエストが一致するため、最も具体的なパターンを最初に宣言する必要があります。

  • レルム基本認証に使用するドメイン名を設定します(有効になっている場合)。 realmNameプロパティBasicAuthenticationEntryPointに対応します。

  • リクエストマッチャー定義RequestMatcher戦略で使用FilterChainProxy作成者intercept-url作成されたBeanは着信要求と一致します。現在のmvcantregexを選択しますciRegex、Spring MVC、ant、正規表現、大文字と小文字を区別しない正規表現を使用します。それぞれに個別のインスタンスを作成します インターセプトURL 要素の使用 パターン方法 属性、Antパスマッチングの使用AntPathRequestMatcher正規表現とのマッチングRegexRequestMatcher。これらのJavadocクラスがどのように正確に一致するかを確認してください。 Antパスがデフォルトの戦略です。

  • request-matcher-refBean実装への参照RequestMatcherこれはFilterChainを使用するかどうかを決定します。これはより強力な代替手段です。 パターン

  • セキュリティこの属性noneを設定することにより、要求パターンを空のフィルターチェーンにマップできます。セキュリティは適用されず、Springセキュリティ機能は利用できません。

  • security-context-repository-refカスタムインジェクションを許可しますSecurityContextRepository Enter SecurityContextPersistenceFilter

  • サーブレット-API-プロビジョニング提供されるバージョンHttpServletRequest isUserInRole() with getPrincipal()などのセキュリティメソッドこれは、スタックに1つSecurityContextHolderAwareRequestFilter Beanを追加することによって行われます。デフォルト値はtrueです。

子要素

この要素を使用すると、errorPageデフォルトの属性AccessDeniedHandlerを設定できます。 ExceptionTranslationFilterを使用して エラーページ 属性、または属性を使用して独自の実装を提供します。 ref 属性。これについては、より詳細な章で説明します。 A ExceptionTranslationFilter

親要素
属性
  • エラーページアクセスが拒否されたページ。確認済みのユーザーは、アクセスの許可なしにリクエストしたページにリダイレクトされます。

  • refSpring Bean AccessDeniedHandlerを参照する型を定義します。

この要素により、構成が可能になりますCorsFilter。そうでない場合CorsFilterまたはCorsConfigurationSource SpringMVCクラスパスで指定されているa HandlerMappingIntrospector CorsConfigurationSourceとして使用されます。

属性

属性要素はヘッダー要素を制御します。

  • ref指定された名前の属性を指定するオプションの属性CorsFilter

  • ref指定された名前の属性を指定するオプションの属性CorsConfigurationSourceに注入されましたCorsFilter XML名前空間によって作成されました。

親要素

この要素を使用すると、送信する追加の(セキュリティ)ヘッダーと応答を構成できます。複数のヘッダーファイルを簡単に構成でき、カスタムヘッダーを設定することもできます ヘッダ で見つけることができます セキュリティヘッダー 参照断面。

  • Cache-ControlPragmaExpires付き-使用するように設定できます キャッシュ制御 元。これにより、ブラウザが安全なページをキャッシュしないようになります。

  • Strict-Transport-Security-使用するように設定できます hsts 元。これにより、ブラウザが将来HTTPSを自動的に要求するようになります。

  • X-Frame-Options-使用するように設定できます フレームオプションXフレーム-オプション クリックジャッキング攻撃を防ぐために使用できます。

  • X-XSS-Protection-設定に使用できます xss-保護X-XSS-保護 ブラウザから基本的な制御を行うことができます。

  • X-Content-Type-Options-設定に使用できます content-type-options 元。に X-Content-Type-Options ヘッダーは、アナウンスされたコンテンツタイプからのInternet ExplorerMIMEスニッフィング応答を防ぎます。これは、拡張機能をダウンロードする際のGoogleChromeにも当てはまります。

  • Public-Key-PinningまたはPublic-Key-Pinning-Report-Only-設定に使用できます hpkp 元。これにより、攻撃者はMISを介して偽の証明書を発行したりなりすましに抵抗したりするWebサイトにHTTPSを使用できます。

  • Content-Security-PolicyまたはContent-Security-Policy-Report-Only-設定に使用できます コンテンツセキュリティポリシー 素子。 コンテンツセキュリティポリシー(CSP) これは、クロスサイトスクリプティング(XSS)などのコンテンツインジェクションの脆弱性を軽減するためにWebアプリケーションが使用できるメカニズムです。

属性

属性要素はヘッダー要素を制御します。

  • デフォルト-無効デフォルトのSpringSecurityHTTP応答ヘッダーを無効にすることを指定するオプションの属性。デフォルトが間違っています(デフォルトのタイトルを含む)。

  • 無効SpringSecurityのHTTP応答ヘッダーを無効にすることを指定するオプションの属性。デフォルトは間違っています(タイトルが有効になっています)。

親要素
子要素

Cache-ControlPragmaに、Expiresヘッダーを追加して、ブラウザーがセキュリティページをキャッシュしないようにします。

属性
  • 無効キャッシュ制御を無効にするかどうかを指定します。デフォルトのエラー。

親要素

追加できる場合 Strict-Transport-Security セキュリティ要求への応答のヘッダー。これにより、サーバーは、将来の要件にHTTPSを自動的に使用するようにブラウザーに指示できます。

属性
  • 無効厳密な送信セキュリティを無効にするかどうかを指定します。デフォルトのエラー。

  • include-sub-domains指定されたエリアを含める必要があります。デフォルトはtrueです。

  • max-age-seconds指定された時間の所有者は、既知の最大のHSTSホストである必要があります。デフォルトでは1年。

  • request-matcher-refrequestmatcherインスタンスを使用してヘッダーを設定する必要があるかどうかを判断する場合、HttpServletRequest.isSecure()のデフォルト値はtrueです。

親要素

追加できる場合 HTTPの公開鍵ピンニング拡張機能 セキュリティ要求への応答のヘッダー。これにより、攻撃者はMISを介して偽の証明書を発行したりなりすましに抵抗したりするWebサイトにHTTPSを使用できます。

属性
  • 無効指定されたHTTP(HPKP)公開鍵は無効にする必要があります。デフォルトはtrueです。

  • include-sub-domains指定されたエリアを含める必要があります。デフォルトのエラー。

  • max-age-seconds公開鍵ピンヘッダーの最大経過時間コマンド値を設定します。デフォルトは60日です。

  • レポートのみブラウザがピン検証の失敗のみを報告するかどうかを指定します。デフォルトはtrueです。

  • レポートサイト指定されたURI、ブラウザはPIN検証の失敗を報告する必要があります。

親要素

ピンリスト。

子要素

base64でエンコードされたSPKIフィンガープリント値と暗号化ハッシュアルゴリズムの属性を指定します。

属性
  • アルゴリズムパスワードハッシュアルゴリズム。デフォルトはSHA256です。

親要素

追加できる場合 コンテンツセキュリティポリシー(CSP) 応答ヘッダーCSPは、クロスサイトスクリプティング(XSS)などのコンテンツインジェクションの脆弱性を軽減するためにWebアプリケーションが使用できるメカニズムです。

属性
  • ポリシー指令コンテンツセキュリティポリシーヘッダーファイルのセキュリティポリシー命令(S)の場合、またはレポートがtrueにのみ設定されている場合は、ヘッダーファイルのコンテンツセキュリティポリシーレポートのみが使用されます。

  • レポートのみコンテンツセキュリティポリシーレポートがポリシー違反のヘッドラインのみを報告するようにするには、trueに設定します。デフォルトはfalseです。

親要素

追加できる場合 X-Frame-Optionsヘッダー 応答。これにより、ブラウザはセキュリティチェックと防止を行います。 クリックジャッキング 攻撃。

属性
  • 無効無効になっていて、Xフレームオプションヘッダーが含まれていない場合、デフォルトでエラーになります。

  • ポリシー

    • DENY Webサイトが何をしようとしても、ページをフレームに表示することはできません。フレームオプション戦略が指定されている場合でも、これはデフォルト値です。

    • SAMEORIGINこのページは、同じページの同じページフレームにのみ表示できます。

    • ALLOW-FROM originこのページは、指定された出所のボックスにのみ表示できます。

    つまり、拒否を指定すると、フレームにロードしようとしているページが他のサイトからロードできないだけでなく、同じサイトからロードしようとしても失敗します。一方、同一生成元を指定した場合でも、サイトが同じサービスページとしてフレームに含まれている限り、フレームページで使用できます。

  • 戦略選択AllowFromStrategy許可からの戦略を使用するときに使用します。

    • static単一の静的allow-from値を使用します。この値を渡すことができます 属性。

    • regexp受信リクエストを検証するためにregelur式を使用することが許可されている場合。正規表現を渡すことができます 属性。検証のために値を取得するためのリクエストパラメータを使用できます。 A from-パラメータ

    • whitelistコンマ区切りのリストには、許可されたドメインが含まれています。カンマ区切りはで設定できます 属性。要求パラメーターは、値を取得して、指定できることを確認するために使用されます from-パラメータ

  • ref事前定義された戦略を使用する代わりに、カスタムの `allowfromstrategy`を使用することもできます。このBeanへの参照は、ref属性を介して指定できます。

  • 使用する値はallow-fromです。 A 戦略

  • from-パラメータ指定されたリクエストパラメータの名前が使用される場合、正規表現またはホワイトリストの許可からの戦略が使用されます。

親要素

追加 X-XSS-保護ヘッダー 応答の防止を支援する リフレクト/タイプ1クロスサイトスクリプティング(XSS) 攻撃。これはXSS攻撃に対する完全な保護ではありません!

属性
  • xss-protection-blocktrueで、XSS有効保護がtrueの場合、mode = blockヘッダーが追加されます。これは、ページがブラウザによってロードされるべきではないことを示しています。 falseでXSSイネーブル保護がtrueの場合、攻撃が検出されたときにページに応答が表示されますが、攻撃を防ぐために応答が変更されます。このモードをバイパスする方法がある場合があることに注意してください。多くの場合、ページのブロックがより望ましいものになる可能性があります。

親要素

X-Content-Type-Optionsヘッダーを追加して、NOSNIFF値で応答します。 A MIMEスニッフィングを無効にします IE8 + GoogleChromeの拡張機能。

属性
  • 無効選択した指定のタイプを使用できない場合、デフォルトはFALSEです。

親要素

応答にヘッダーファイルを追加するには、名前と値を指定する必要があります。

属性
  • ヘッダー名ヘッダーname名前。

  • value追加されたヘッダー。

  • refカスタム実装への参照HeaderWriterインターフェース。

親要素

1つ追加AnonymousAuthenticationFilterスタックとAnonymousAuthenticationProviderに。使用している場合は必須IS_AUTHENTICATED_ANONYMOUSLY属性。

親要素
属性
  • 有効デフォルトの名前空間設定を使用すると、匿名の「認証」機能が自動的に有効になります。このプロパティを使用して無効にすることができます。

  • 付与された権限匿名リクエストに割り当てる必要のある権限。通常、これは匿名の要求に特定の役割を割り当てるために使用され、その後、承認の決定に使用できます。設定されていない場合、デフォルトはROLE_ANONYMOUSです。

  • キープロバイダーとフィルター間のキー共有。通常、これを設定する必要はありません。設定されていない場合、デフォルトで安全なランダムに生成された値になります。これは、無名関数を使用する場合、安全なランダム値の生成に時間がかかる可能性があるため、この値を設定すると起動時間が長くなる可能性があることを意味します。

  • ユーザー名匿名リクエストに割り当てる必要のあるユーザー名。これにより、メインを識別できます。これは、ロギングと監査にとって重要な場合があります。設定されていない場合、デフォルトはanonymousUserです。

要素が追加されます

HttpSessionCsrfTokenRepository
親要素
属性
  • 無効無効にするSpringSecurityのCSRF保護を指定するオプションの属性。デフォルト値はfalseです(CSRF保護機能)。 CSRF保護機能をオフにすることを強くお勧めします。

  • token-repository-ref使用されるcsrftokenrepository。デフォルト値はjavax.servlet.Filterです。

  • request-matcher-refrequestmatcherインスタンスは、CSRFを使用するかどうかを決定するために使用されます。デフォルトに加えて、「GET」、任意のHTTPメソッド、「Trace」、「Head」、「Opitions」があります。

この要素は、フィルターチェーンにフィルターを追加するために使用されます。追加のBeanクラスは作成されませんが、Beanのタイプを選択するために使用されますFilterアプリケーションのコンテキストで定義されており、Springが管理するフィルターチェーンの特定の場所に詳細を追加できます。セキュリティ。 A 名前空間の章

親要素
属性
  • フィルタは、カスタムフィルタリングの後にチェーンに配置する必要があります。この機能は、独自のフィルターをセキュリティフィルターチェーンに混合し、標準のSpringSecurityフィルターについてある程度の知識を持っている上級ユーザーのみを必要とします。フィルタ名を特定のSpringSecurity実装フィルタにマップします。

  • フィルタは、この直前にカスタムフィルタをチェーンに配置する必要があります。

  • ポジション標準フィルターを交換する場合。カスタムフィルターは、チェーン内の明示的な位置に配置する必要があります。

  • ref実装されたSpringBeanへの参照を定義しますSecurityExpressionHandler

定義SecurityExpressionHandler式ベースのアクセス制御が有効になっている場合はインスタンスが使用され、デフォルトの実装(ACLサポートなし)が使用される場合は提供されません。

親要素
属性
  • refSpring Security UsernamePasswordAuthenticationFilterを実装するための参照を定義します。

1つを追加するために使用されますLoginUrlAuthenticationEntryPointフィルタースタックとa DefaultLoginPageGeneratingFilterアプリケーションの環境に、属性が指定されていない場合、ログインページは本番用だけでなく便利なURLで自動的に生成されます(ビューテクノロジーが選択され、カスタムログインページを提供するために使用できる場合、このクラスtrueログインページの表示を担当し、必要に応じて通常の形式のログインやOpenIDを提供します。]動作はカスタマイズできます 属性

親要素
属性
  • 常に使用するデフォルトのターゲットset alwaysUseDefaultTargetUrlの場合、ユーザーは常に指定された値から開始します default-target-url 、ログインページへのアクセス方法。マップ先UsernamePasswordAuthenticationFilterプロパティfalseデフォルト値はAuthenticationDetailsSourceです。

  • authentication-details-source-ref参照1 AuthenticationFailureHandler認証フィルターによって使用されます。

  • authentication-failure-handler-ref代替として使用できます authentication-failure-url 、認証が失敗した後のナビゲーションフローを完全に制御できます。値はa authenticationFailureUrlである必要があります。Beanはアプリケーションコンテキストにあります。

  • authentication-failure-urlUsernamePasswordAuthenticationFilter属性/login?errorにマップします。ログインに失敗したURLにブラウザをリダイレクトすることを定義します。デフォルト値はAuthenticationSuccessHandlerです。自動ログインページジェネレータは、エラーメッセージとともにログインページを自動的に処理して再描画します。

  • authentication-success-handler-refこれは代替として使用できます default-target-url常に使用するデフォルトのターゲット 、認証が成功した後、ナビゲーションフローを完全に制御できます。値はa SavedRequestAwareAuthenticationSuccessHandlerである必要があります。Beanはアプリケーションコンテキストにあります。デフォルトでは、defaultTargetUrl使用して注入します default-target-url

  • default-target-urlマップ先UsernamePasswordAuthenticationFilter機能Features `LoginUrlAuthenticationEntryPoint設定されていない場合、デフォルト値は「/」(アプリケーションのルート)です。ログイン後、ユーザーはログインする必要がない限り、このURLに移動し、セキュリティで保護されたリソースにアクセスしようとすると、最初に要求されたURLに移動します。

  • ログインページログインページを表示するために使用する必要があるURL。 `loginformurl` filterProcessesUrlにマップします。デフォルト値は「/ login」です。

  • login-processing-urlUsernamePasswordAuthenticationFilter機能ForwardAuthenticationSuccessHandlerにマップします。デフォルト値は「/ login」です。

  • パスワードパラメータパスワードを含むリクエストパラメータの名前。デフォルトは「パスワード」です。

  • ユーザー名-パラメーターユーザー名を含むリクエストパラメータの名前。デフォルトは「username」です。

  • authentication-success-forward-urlマップ先authenticationSuccessHandler UsernamePasswordAuthenticationFilter特性ForwardAuthenticationFailureHandler

  • authentication-failure-forward-urlマップ先authenticationFailureHandler UsernamePasswordAuthenticationFilter機能BasicAuthenticationFilter

1つ追加BasicAuthenticationEntryPoint AuthenticationDetailsSource構成を使用します。後者は、フォームベースのログインが有効になっていない場合にのみ、構成エントリポイントとして使用されます。

親要素
属性
  • authentication-details-source-ref参照AuthenticationEntryPoint認証フィルターが使用されます。

  • エントリポイント参照設定BasicAuthenticationFilter用途HttpFirewall

実装のトップレベル要素FilterChainProxy Enter HttpFirewall名前空間によって作成されるデフォルトの実装は、ほとんどのアプリケーションに適しているはずです。

プロパティ
  • refSpring Bean FilterInvocationSecurityMetadataSourceを実装するための参照を定義します。

この要素は、アプリケーションが使用する「URL」パターンのコレクションを定義し、それらの処理方法を構成するために使用され、FilterSecurityInterceptorを使用してChannelProcessingFilterを構築するために使用されます。また、構成も担当しますFilterInvocationSecurityMetadataSourceたとえば、HTTPS経由で特定のURLにアクセスする必要がある場合。指定されたパターンを着信要求に照合する場合、照合は宣言された要素の順序で行われます。したがって、最も具体的な一致パターンは最初のパターンであり、最も一般的な一致パターンは最後のパターンである必要があります。

親要素
属性
  • アクセスディレクトリに保存されるアクセス属性を一覧表示しますrequest-matcher定義されたURLパターン/メソッドの組み合わせに使用されます。これは、セキュリティ構成属性(ロール名など)のコンマ区切りのリストである必要があります。

  • フィルタ'none'の値のみを取ることができます。これにより、一致する要求はすべてSpringSecurityフィルターチェーンを完全にバイパスします。他の「構成がリクエストに影響を与えることはなく、その期間中利用可能なセキュリティコンテキストはありません。リクエスト中にセキュリティメソッドにアクセスすると失敗します。

この属性は無効です filter-security-metadata-source
  • 方法HTTPメソッドは、パターンマッチングを使用して着信要求をマージします。省略した場合、どのメソッドも一致します。メソッドなしで同一のパターンが指定された場合、メソッド固有の一致が優先されます。

  • パターンURLパスのパターンを定義します。コンテンツは依存しますChannelProcessingFilter HTTP要素の属性を含めるため、デフォルトのAntパス構文が使用されます。

  • 必要なチャネル「Http」または「https」は、特定のURLパターンがアクセスする必要があるHTTPまたはHTTPSの違いによって異なります。優先順位がない場合は、交互に値「any」を使用できます。この属性がanyYuanに存在する場合は、one SecureChannelProcessorフィルタースタックに依存関係を追加し、それをアプリケーションコンテキストに追加します。

oneAdd構成の場合、彼が使用されますInsecureChannelProcessor LogoutFilter Beanは、HTTP / HTTPSポートにリダイレクトするために使用されます。

この属性は無効です filter-security-metadata-source

フィルタチェーンに追加されたj2eepreauthenticatedprocessingfilterは、統合されたコンテナ認証を提供します。

親要素
属性
  • mappable-roles着信HttpServletRequestメッセージに対して照会されるロールのコンマ区切りのリスト。

  • user-service-refユーザーのサービス(またはuserdetailsservice Bean)ID

1つSecurityContextLogoutHandlerをフィルタースタックに追加します。これは、a invalidateHttpSessionを構成するためのものです。

親要素
属性
  • 削除Cookieユーザーがログインするときは、名前のコンマ区切りリストを削除する必要があります。

  • 無効化セッションマップ1 SecurityContextLogoutHandler of SessionManagementFilterデフォルト値は「true」であるため、セッションは無効になり、ログオフされます。

  • logout-success-urlログイン後、ユーザーはリンク先URLを取得します。デフォルト値は/?logout(つまり、/ login?logout)です。

    このプロパティを設定すると、注入されますSimpleRedirectInvalidSessionStrategyおよびa LogoutSuccessHandler属性値を構成します。無効なセッションIDが送信されると、ストラテジーは呼び出しを構成済みのURLにリダイレクトします。

  • logout-urlURLはログアウトを引き起こします(つまり、フィルターによって処理されます)。デフォルト値は「/ logout」です。

  • 成功ハンドラー参照例を提供するために使用できますlogin-processing-urlログ記録後にナビゲーションを制御するために呼び出されます。

と同様で、同じプロパティがあります。OpenIDAuthenticationFilterデフォルト値は「/ login / openid」です。OpenIDAuthenticationProvider with UserDetailsService登録されます。後者はa idを参照する必要があります。同様に、これはuser-service-ref指定、使用UsernamePasswordAuthenticationFilter属性にするか、アプリケーションのコンテキストに自動的に配置されます。

の親要素
属性
  • 常にデフォルトのターゲットを使用ログイン後、ユーザーは常にデフォルトのリンク先URLにリダイレクトされる必要があります。

  • authentication-details-source-ref使用する認証フィルタリングについては、認証詳細ソースを参照してください

  • authentication-failure-handler-ref認証失敗要求を処理するために使用する必要があるAuthenticationFailureHandlerBeanを参照してください。認証失敗リンクの組み合わせを使用して、後続のターゲットに移動するための実行処理を実装しないでください。

  • authentication-failure-urlログイン失敗ページのURL。ログイン失敗URLが指定されていない場合、SpringSecurityは失敗したログインURLを自動的に作成します。失敗したログインURLが要求されると、ログインエラーと対応するフィルターが開きます。

  • authentication-success-forward-urlIn ForwardAuthenticationSuccessHandler属性authenticationSuccessHandlerマップ先UsernamePasswordAuthenticationFilter

  • authentication-failure-forward-urlIn ForwardAuthenticationSuccessHandler属性authenticationSuccessHandlerマップ先attribute-exchange

  • authentication-success-handler-ref正常な認証要求を処理するには、AuthenticationSuccessHandlerBeanへの参照を使用する必要があります。組み合わせて使用​​しないでください。 default-target-url (または 常に使用するデフォルトのターゲット )実行を達成することは、後続の目標へのナビゲーションを処理することです。

  • default-target-urlユーザーの以前のアクションを回復できない場合、認証が成功した後、ユーザーはURLにリダイレクトされます。通常、ユーザーが最初に安全な操作を要求せずにログインページにアクセスすると、認証がトリガーされます。指定しない場合、デフォルトはアプリケーションのルートです。

  • ログインページログインページのURL。ログインURLが指定されていない場合、Spring SecurityはログインURLと対応するフィルターを自動的に作成して、要求されたログインURLを表示します。

  • login-processing-urlログインウィンドウが公開されているURL。指定しない場合、デフォルトでログインします。

  • パスワードパラメータパスワードを含むリクエストパラメータの名前。デフォルトは「パスワード」です。

  • user-service-refユーザーサービス(またはユーザー詳細サービス)IDを参照してください

  • ユーザー名-パラメーターユーザー名を含むリクエストパラメータの名前。デフォルトは「username」です。

の子要素

identifier-match要素定義属性リストはIDプロバイダーに要求する必要があります。 OpenIDサポート 例は、名前空間の構成セクションにあります。複数使用できます。この場合、それぞれにportmapperimpl属性が必要です。指定されたOpenID識別子と一致すると、正規表現が含まれます。これにより、さまざまなベンダー(Google、Yahooなど)からさまざまな属性リストを取得できます。

の親要素
属性
  • 識別一致認証プロセス中に構成を交換する属性を決定するとき、要求されたIDと比較される正規表現。

の子要素

OpenIDAxe属性を作成するために使用されます フェッチリクエスト

の親要素
属性
  • カウント返される属性の数を指定します。たとえば、3通のメールを返します。デフォルト値は1です。

  • 名前返される属性の名前を指定します。たとえば、電子メール。

  • 必須この属性が操作に必要かどうかを指定しますが、操作が属性を返さない場合はエラーは発生しません。デフォルトはfalseです。

  • タイプ属性タイプを指定します。例えば、 http://axschema.org/contact/email 。操作に有効な属性タイプのドキュメントを表示します。

デフォルトでは、インスタンスRememberMeAuthenticationFilterは、安全なURLリダイレクトと安全でないURLリダイレクトの構成に追加されます。この要素は、オプションで、このクラスによって定義されたデフォルトのマッピングをオーバーライドするために使用できます。 EachThe要素は、HTTP:HTTPSポートのペアを定義します。デフォルトのマッピングは80:443および8080:8443です。これらを書き換える例は、 名前空間の紹介 現れる。

の親要素
の子要素

強制リダイレクトがマップHTTPポートHTTPSポートの方法を提供する場合。

親要素
属性
  • httpHTTPポートを使用します。

  • httpsHTTPSポートを使用します。

TokenBasedRememberMeServicesスタックに追加します。プロパティ設定に従って、1つは順番に構成されますPersistentTokenBasedRememberMeServices、1つRememberMeServicesまたはユーザー指定の実装RememberMeAuthenticationFilter

の親要素
属性
  • authentication-success-handler-refカスタムナビゲーションが必要な場合は、authenticationSuccessHandlerセットアップDataSourceアプリケーションコンテキストでは、値はauthenticationsuccesshandlerBeanの名前である必要があります。

  • data-source-ref1つ引用してくださいpersistenttokenbasedremembermeservices `will use and configure one Bean。そのように設定されている場合、AbstractRememberMeServices jdbctokenrepositoryimplインスタンス。

  • Remember-me-parameterRemember-me認証要求のパラメーター名を切り替えます。デフォルトは「remember-me」です。 'パラメータ' AbstractRememberMeServices属性にマップします。

  • Remember-me-cookieCookieの名前は、remember-me認証を格納するトークンです。デフォルトは「remember-me」です。AbstractRememberMeServices属性は「cookieName」にマップされます。

  • キーPersistentTokenBasedRememberMeServices属性は「キー」にマップされます。 Remember-me Cookieがアプリケーションの脚注でのみ有効であることを確認するには:[これはRememberMeServicesの使用には影響しません、トークンはサーバー側に保存されます。]。これが生成される安全なランダム値を設定しない場合。安全なランダム値の生成には時間がかかる場合があるため、remember me機能を使用する場合、明確な値を設定すると起動時間が短縮されます。

  • サービス-エイリアス内部で定義された出力Full control of the implementation. The value should be the 'id' of the bean that implements this interface in the application context. It should also be executed if the logout filter is in use Beanエイリアスとして、アプリケーションコンテキスト内の他のBeanで使用できるようにします。

  • services-ref使用するフィルターにより、 `remembermeservices` PersistentTokenBasedRememberMeServicesが可能になりますlogouthandler`。

  • token-repository-ref1つを構成しますPersistentTokenRepositoryただし、カスタムの使用を許可しますAbstractRememberMeServices豆。

  • トークンの有効性-秒tokenValiditySeconds属性はにマップされますfalse remember-mecookieが数秒以内に有効になるように指定します。デフォルトでは、有効期間は14日です。

  • use-secure-cookieRemember-me CookieはHTTPS経由でのみ送信できるため、「セキュア」としてマークすることをお勧めします。デフォルトでは、ログイン要求リンクが安全である場合(そうである必要があります)、安全なCookieが使用されます。このプロパティをtrueに設定すると、安全なCookieは使用されません。 AbstractRememberMeServicesに設定します。セキュリティサインは常にCookieに設定されます。これuseSecureCookie属性はUserDetailsServiceにマップされます。

  • user-service-refRemember-meサービスにアクセスするには、access idが必要です。したがって、アプリケーションコンテキストに定義が必要です。 1つしかない場合は、名前空間の構成を通じて選択され、自動的に使用されます。複数のインスタンスがある場合は、Beanを指定できますExceptionTranslationFilterこのプロパティを明示的に使用します。

素子

セットはRequestCache使用中AuthenticationEntryPointインスタンスは呼び出しに保存されますRequestCache前のリクエスト情報。

親要素
属性
  • refSpringBeanへの参照を定義します。これはa SessionManagementFilterです。

フィルタスタックに1つSessionManagementFilterを追加することにより、セッション管理関連の機能が実装されます。

親要素
属性
  • 無効なセッションURLこのプロパティを設定すると挿入されますSimpleRedirectInvalidSessionStrategy 1つのInject an appropriate configuration構成属性値。無効なIDが送信されると、ストラテジーはリダイレクト構成URLに呼び出されます。

  • session-authentication-error-url定義されたエラーページには、セッション認証戦略で例外を引き起こしたURLが表示されます。設定されていない場合、許可されていない(401)エラーコードがクライアントに返されます。フォームベースのログインでエラーが発生した場合、このプロパティは適用されないことに注意してください。認証に失敗したURLが優先されます。

  • session-authentication-strategy-refSessionManagementFilterによって使用されるSessionAuthenticationStrategyインスタンスを追加する権限。

  • セッション固定保護セッション固定保護の適用はユーザーによって認証されることに注意してください。 'none'に設定すると、保護は適用されません。 'newSession'は新しい空のセッションを作成し、SpringSecurity関連のプロパティのみが移行されます。 'migrateSession'は新しいセッションを作成し、すべてのセッション属性を新しいセッションにコピーします。サーブレット3.1(Java EE 7)の新しいコンテナでは、「changesessionid」を指定すると、既存のセッションが保持され、コンテナによって提供されるセッション固定保護が使用されます(HttpServletRequest#changesessionid())デフォルトは「サーブレット3.1および新しいコンテナのchangesessionid」です。大きなコンテナでのmigratesession '。 'changesessionid'が大きなコンテナで使用されている場合、例外がスローされます。

    セッション固定保護が有効になっている場合は、 `sessionmanagementfilter` Will be created, and a `ConcurrentSessionControlAuthenticationStrategy Defaultsessionauthenticationstrategy`。このタイプのJavadocの詳細を参照してください。

子要素

同時セッション制御のサポートが追加され、ユーザーが持つことができるアクティブなセッションの数に制限を設けることができるようになりました。コンカレントセッションフィルターSessionManagementFilterform-loginで利用できます。記述されている場合SessionRegistry要素、ポリシーオブジェクトも作成された検証フィルターに挿入されます。SessionRegistryImpl(ユーザーがカスタムBeanを使用する場合を除いて1つSessionAuthenticationExceptionインスタンス)戦略インスタンスは次のようになります。使用するために作成されました。

親要素
属性
  • error-if-maximum-exceeded'true'に設定すると、ユーザーが最大許容セッション数を超えようとすると、exception-if-maximum-exceededがトリガーされます。このデフォルトの動作は、プリミティブセッションを無効にすることです。

  • 期限切れ-urlコンカレントセッションコントローラーによって「期限切れ」になったセッションを使用しようとすると、ユーザーが許可されたセッションの数を超えたためにURLユーザーがリダイレクトされ、別の場所で再度ログインします。 ConcurrentSessionControlAuthenticationStrategyが設定されていない限り。値が指定されていない場合、有効なメッセージが応答に直接返されます。

  • 最大セッションmaximumSessions属性はsession-registry-aliasにマップされます。

  • セッション-レジストリ-エイリアス独自のBeanまたは管理インターフェースで使用するための内部セッション・レジストリーへの参照があると便利な場合もあります。 Use Use `session-registry-ref Propertiesは、内部Beanを公開し、構成の他の場所で使用できる名前を付けることができます。

  • session-registry-refユーザーは独自のセッションレジストリX509AuthenticationFilter属性を提供できます。他の同時セッション制御Beanは、それを使用するために接続されます。

X.509認証のサポートが追加されました。 A Http403ForbiddenEntryPointスタックに追加され、AuthenticationDetailsSource Beanが作成されます。後者は、他の認証メカニズムがない場合にのみ使用されます(その唯一の機能は、HTTP 403エラーコードを返すことです)。 `preauthenticatedauthenticationprovider`は、ユーザー権限を` userdetailsservice`にロードする場所も作成します。

親要素
属性
  • authentication-details-source-ref引用1 UserDetailsService

  • サブジェクト-プリンシパル-正規表現証明書からユーザー名を抽出するために使用される正規表現を定義します(使用Filter)。

  • user-service-ref特定の `UserDetailsS​​ervice`X.509で複数のインスタンスを構成できるようにします。設定されていない場合は、適切なインスタンスを自動的に見つけて使用しようとします。

filterchainproxyおよびfilterchainmapインスタンスを明示的に構成するために使用されます

属性
  • リクエストマッチャー着信要求の使用に一致する戦略を定義します。現在のオプションは、「ant」(antパスパターン)、「regex」正規表現、および「ciRegex」大文字と小文字を区別しない正規表現です。

子要素

特定のURLパターンと、そのパターンに一致するURLに適したフィルターリストを定義するために使用されます。複数のフィルターチェーン要素がリストに結合されている場合FilterChainProxyを構成するには、最も具体的なパターンをリストの一番上、一番下に配置する必要があります。最も一般的なモードです。

親要素
属性
  • フィルタカンマ区切りのリストは、SpringBeanの実装Filterを参照します。値「none」はnoを意味しますWill be used to determine if there is some `Filter `FilterChain`に使用する必要があります。

  • request-matcher-refrequestmatcherの引用filters From @AuthenticationPrincipal呼び出す必要のある属性。

使用するFilterSecurityMetadataSourceFilterSecurityInterceptorBeanを明示的に構成するために使用されます。 FilterChainProxyを構成する場合、要素を使用する代わりに、明示的なものだけが必要です。メソッドのみを含むintercept-urlをインターセプトし、属性パターンにアクセスします。それ以外の場合は、構成エラーが発生します。

属性
  • idコンテキスト内の他の場所でBeanを参照するために使用されるBean識別子。

  • 小文字-比較小文字を強制した後

  • リクエストマッチャー着信要求を照合するための戦略を定義します。現在の選択肢は、「ant」(antパスパターン)、「regex」正規表現、および「ciRegex」大文字と小文字を区別しない正規表現です。

  • 使用式従来の構成属性のリストの代わりに、要素で式「access」属性を使用できます。デフォルトは「true」です。有効にした場合、各属性には単一のブール式が含まれている必要があります。式の結果が「true」の場合、アクセスが許可されます。

子要素

WebSocketのセキュリティ

Spring Security 4.0+は、認証メッセージのサポートを提供します。これは、WebSocketベースのアプリケーションに承認を提供する便利な例です。

websocket-message-broker要素には2つの異なるモードがあります。場合 [メール保護] 指定されていない場合は、次のようになります。

  • SimpAnnotationMethodMessageHandlerAuthenticationPrincipalArgumentResolverがカスタムパラメーターリゾルバーとして登録されていることを確認してください。これにより、Authentication現在のメインを解決するAuthenticationManagerを使用できます。

  • securitycontextchannelinterceptorがclientinboundchannelとして自動的に登録されていることを確認します。これは、ユーザーが入力したSecurityContextHolderメッセージにあります。

  • channelsecurityinterceptorがclientinboundchannelに登録されていることを確認してください。これにより、承認ルールで指定されたメッセージが許可されます。

  • CsrfChannelInterceptorがclientInboundChannelに登録されていることを確認してください。これにより、元のドメインからのリクエストのみが有効になります。 * CsrfTokenHandshakeInterceptorがWebSocketHttpRequestHandler、TransportHandlingSockJsService、またはDefaultSockJsServiceに登録されていることを確認してください。これにより、予期されたcsrftokenがメッセージからWebSocketSessionプロパティに確実にコピーされます。

追加の制御が必要な場合は、IDを指定すると、指定されたIDにchannelsecurityinterceptorが割り当てられます。すべての配線とSpringのメッセージングインフラストラクチャは手動で実行できます。これは面倒ですが、より優れた構成制御を提供します。

属性
  • idchannelsecurityinterceptorBeanのコンテキスト内の任意の場所を参照するために使用されるBean識別子。指定する場合、SpringSecurityはSpringMessaging内で明示的に構成する必要があります。指定しない場合、SpringSecurityは次のような通信インフラストラクチャと自動的に統合されます。 説明します。

  • 同一生成元無効CSRFトークンがStompヘッダーに表示されるという要件を無効にします(デフォルトエラー)。他のオリジンSockJSを接続させる必要がある場合は、デフォルトを変更すると便利です。

子要素

メッセージの承認ルールを定義します。

親要素
属性
  • パターン一致するメッセージに基づくアリのコロニーパターン。例えば、 '/'宛先のメッセージと一致します' / admin /'メッセージを' / admin / ** ''で始まる宛先と照合します。

  • タイプ一致するメッセージのタイプ。 simpmessagetypeの有効な値の定義(つまり、CONNECT、CONNECT_ACK、HEARTBEAT、MESSAGE、SUBSCRIBE、UNSUBSCRIBE、DISCONNECT、DISCONNECT_ACK、OTHER)。

  • アクセス情報を保護するための表現。たとえば、「DenyAll」はすべての一致する情報へのアクセスを拒否します。「permitall」はすべての一致する情報へのアクセスを許可します。「hasrole(「admin」)」は、現在のユーザーのロール「role_admin」が情報と一致する必要があります。

認証サービス

Spring Security 3.0より前は、ProviderManager内部で自動的に登録されます。ここで、要素の1つを明示的にRegisterを使用する必要があります。これにより、Spring Security Examples. These can be created using syntax elements provided by the namespace, or they can be standard bean definitions, marked as using `authentication-providerクラスのインスタンスが作成されます。1つ以上のAuthenticationProvider Provide authentication services for applications. Creation of all elements要素のリストを構成する必要があります。

名前空間を使用するすべてのSpringSecurityアプリケーションには、この要素を含める必要があります。登録されたauthenticationManagerを担当しますeraseCredentialsAfterAuthentication AuthenticationProviderインスタンスはこの子要素である必要があります。

属性
  • エイリアスこのプロパティを使用すると、独自の構成で使用される内部インスタンスのエイリアスを定義できます。その目的はで説明することです 名前空間の紹介

  • 資格情報の消去trueに設定すると、AuthenticationManagerは、ユーザーが認証されると、返された認証オブジェクトの資格情報データをクリアしようとします。実際、それはProviderManager属性Attribute, this element is abbreviated to configure one DaoAuthenticationProvider . `DaoAuthenticationProviderにマップされます。これは コアサービス この章で説明します。

  • idこの属性を使用すると、内部インスタンスの独自の構成で使用する識別子を定義できます。これは同じエイリアス要素ですが、id属性要素を使用する際のより一貫したエクスペリエンスを提供します。

子要素

`REF Compare with the login time provided by the username/password combination. An instance of `userdetailsservice` can be defined by using the available namespace elements (`jdbc-user-serviceユーザー詳細サービスからユーザー情報をロードするuser-service-refまたは使用しない限りAuthenticationProvider属性はアプリケーションコンテキストで定義されたBeanを参照します)。に 名前空間の紹介 これらの変更の例は、にあります。

親要素
属性
  • refSpringBean実装への参照を定義しますAuthenticationProvider

独自のselect username, authority from authorities where username = ?実装を作成する場合(またはSpring Securityの実装を従来のBeanとして構成する場合は、次の構文を使用して、それを `providermanager`の内部リストに追加できます。

select g.id, g.group_name, ga.authority from groups g, group_members gm, group_authorities ga where gm.username = ? and g.id = ga.group_id and g.id = gm.group_id
  • user-service-ref参照Bean実装UserDetailsS​​erviceは、標準Bean要素またはカスタムser-service要素を使用して作成できます。

子要素

JDBCベースのUserDetailsS​​erviceを作成します。

属性
  • ユーザー名クエリによる権限SQLステートメントは、ユーザーから政府に与えられたユーザー名を照会します。

デフォルトは

select username, password, enabled from users where username = ?
  • cache-refUserDetailsS​​erviceキャッシュへの参照を定義します。

  • data-source-refBean IDは、必要なテーブルのデータソースを提供します。

  • group-authorities-by-username-queryユーザーグループ部門によって指定されたユーザー名を照会するSQLステートメント。

デフォルトは

+

In the instance, it may be accompanied by `SaltSource
  • idBean識別子。コンテキスト内の任意の場所でBeanに使用されます。

  • ロールプレフィックス永続ストレージ(デフォルトは「ROLE_」)から、空でない文字列プレフィックス文字列が文字ロードに追加されます。空でないデフォルトの場合は、プレフィックスなしで値「none」を使用します。

  • users-by-username-querySQLステートメントは、ユーザー名とパスワードを照会し、ユーザー名のステータスを有効にします。デフォルトは

    PasswordEncoder

といった 名前空間の紹介 説明したように、認証プロバイダーは、パスワードエンコーダーを使用するように構成できます。これにより、Beanが対応するpasswordencoderに注入されますusername=password,grantedAuthority[,grantedAuthority][,enabled|disabled] Beanはソルトハッシュ値を提供します。

親要素
属性
  • base64文字列をBase64でエンコードする必要があるかどうか

  • ハッシュユーザーパスワードのハッシュアルゴリズムを定義します。 MD4は非常に弱いハッシュアルゴリズムであるため、使用しないことを強くお勧めします。

  • refSpringBean実装への参照を定義しますAccessDecisionManager

子要素

パスワード保護戦略。 UserDetailsオブジェクトからシステム定数と属性を使用できます。

親要素
属性
  • refSpring BeanIDへの参照を定義します。

  • システム全体単一の値が暗号化エンコーダーのソルトとして使用されます。

  • ユーザープロパティUserDetailsオブジェクトの属性は、パスワードエンコーダーを介してソルトとして使用されます。通常、「username」のようなものが使用されます。

プロパティファイルまたはリストの「user」サブ要素からUserDetailsS​​erviceメモリを作成します。内部的に小文字に変換され、ユーザー名で大文字と小文字を区別しないクエリが可能になるため、大文字と小文字を区別する場合は使用しないでください。

属性
  • idBean識別子は、コンテキスト内の任意の場所でBeanを参照するために使用されます。

  • プロパティプロパティファイルの場所、各行の形式は次のとおりです。

    AuthenticationManager
子要素

アプリケーション内のユーザーを表します。

親要素
属性
  • 当局1つ以上の機関によって付与されたユーザー。権限(スペースは不可)をコンマで区切ります。例: 'ROLE_USER、ROLE_ADMINISTRATOR'

  • 無効アカウントを無効および使用不可としてマークするには、「true」に設定できます。

  • ロックされていますアカウントのロックアウトをマークするために「true」に設定でき、使用できません。

  • 名前ユーザーに割り当てられたユーザー名。

  • パスワードユーザーに割り当てられたパスワード。対応する認証プロバイダーがハッシュをサポートしている場合(「user-service」の「hash」属性要素を設定することを忘れないでください)、これはハッシュである可能性があります。この属性を省略すると、データは認証に使用されません。ただし、当局にアクセスする場合のみ。省略した場合、名前空間はランダムな値を生成して、誤って認証を使用しないようにします。空にすることはできません。

メソッドのセキュリティ

この要素の主な方法は、Spring SecurityBeanにサポートセキュリティメソッドを追加することです。 AspectJ構文を使用するには、アノテーション保証(インターフェイスまたはクラスで定義)を使用するか、ポイントカットのセットを子要素として定義します。

属性
  • access-decision-manager-refand Jsr250Voterを使用します。同じセキュリティ方法でネットワークセキュリティを構成しますが、これはこのプロパティで上書きできます。デフォルトでは、AffirmativeBased実装がRoleVoterとAuthenticatedVoterに使用されます。

  • authentication-manager-ref引用1 AccessDecisionManagerメソッドのセキュリティに使用する必要があります。

  • jsr250-アノテーションJSR-250スタイル属性(「RolesAllowed」など)を使用するかどうかを指定します。これにはjavax.annotationが必要です。セキュリティクラスはクラスパスにあります。これをtrueに設定すると、1つも追加されますmethodsecuritymetadatasource To spring-security-aspectsしたがって、カスタム実装を使用していて、これらのアノテーションを使用する場合は、必ずこれを行う必要があります。

  • メタデータ-ソース-参照外部AnnotationSecurityAspectインスタンスは、他のソース(デフォルトのメモなど)よりも優先して提供できます。

  • モードこのプロパティを「AspectJ」に設定して、デフォルトのSpringAOPの代わりにAspectJを使用するように指定できます。メソッドのセキュリティは、RunAsManagerコンポーネントMethodSecurityInterceptorオーケストレーションから派生する必要があります。

AspectJはJavaインターフェースの注釈に従い、継承されないことに注意してください。これは、インターフェースを定義するセキュリティ注釈メソッドが安全でないことを意味します。逆に、AspectJを使用する場合は、クラスにSecurityアノテーションを付ける必要があります。

  • 注文安全な傍受の方法として「順序」を設定することを提案できます。

  • 前後の注釈呼び出しアノテーション(@ PreFilter、@ PreAuthorize、@ PostFilter、@ PostAuthorize)の前後にSpringSecurityを使用するかどうかを指定してこのアプリケーションコンテキストをサポートする必要があります。デフォルトは「無効」です。

  • プロキシターゲットクラスこれが当てはまる場合、インターフェイスベースのプロキシの代わりにクラスベースのプロキシが使用されます。

  • run-as-manager-refオプションの引用AfterInvocationProvider構成可能global-method-security

  • 保護された注釈SpringSecurityの@Securedアノテーションを使用してアプリケーションコンテキストを有効にするかどうかを指定します。デフォルトは「無効」です。

子要素

PassNamespace、この要素は、メンテナンスのためにrefセキュリティインターセプターを装飾するために使用できます。ゼロ個以上を定義できますAfterInvocationProviderアプリケーションのコンテキスト内の要素には、それぞれAfterInvocationProvider属性がPostInvocationAdviceProvider Beanインスタンスを指します。

親要素
属性
  • refSpringBean実装への参照を定義しますPostInvocationAuthorizationAdvice

デフォルトの式メカニズムがアノテーション(@ PreFilter、@ PreAuthorize、@ PostFilter、@ PostAuthorize)を呼び出す前後にSpring Securityを処理して、それらを完全に置き換えることを許可します。これらの有効な注釈にのみ適用されます。

親要素
子要素

前後のメタデータ注釈を生成するために使用されるPrePostInvocationAttributeFactoryインスタンスのメソッドを定義します。

親要素
属性
  • refSpring BeanIDへの参照を定義します。

要素については、カスタマイズPreInvocationAuthorizationAdviceVoterいいえPreInvocationAuthorizationAdviceVoter

親要素
属性
  • refSpring BeanIDへの参照を定義します。

要素については、カスタマイズ@SecuredいいえContextSource

親要素
属性
  • refSpring BeanIDへの参照を定義します。

メソッドセキュリティの使用

個別のメソッドまたはクラスベースのセキュリティ属性を定義する代わりに、use ContextSource注:横断的なセキュリティ制約setElementを定義するメソッドおよびインターフェイスサービスレイヤー全体で使用できます。あなたはできる 名前空間の紹介 で例を見つけてください。

親要素
属性
  • アクセスたとえば、一致するすべてのメソッドのエントリポイントに適用可能な構成属性のリストにアクセスします。 'ROLE_A、ROLE_B'

  • キーワード「execution」を含むAspectJの式。たとえば、「execution(int com.foo.TargetObject.countLength(String))」(引用符なし)。

Beanの定義を使用して、Beanにセキュリティインターセプターを追加できます。 Beanの定義を使用して、セキュリティインターセプターをBeanに追加し、Beanの構成プロパティにアクセスする方法を設定できます。

属性
  • access-decision-manager-refAccessDecisionManager BeanIDによって作成されるオプションのメソッドセキュリティインターセプター。

子要素

MethodSecurityMetadataSourceインスタンスを作成します

属性
  • idBeanのコンテキストを指すために使用されるBean識別子。

  • 使用式従来の構成属性リストの代わりに、要素「access」属性式を使用できます。デフォルトは「false」です。有効にした場合、各属性にはブール式が含まれている必要があります。式が「true」と評価された場合、アクセスが許可されます。

子要素

保護されたメソッドを定義し、それに適用されるアクセス制御構成プロパティを定義します。 「protect」宣言を「global-method-security」によって提供されるサービスと混在させないことを強くお勧めします。

親要素
属性
  • アクセスこのメソッドに適したアクセス構成プロパティのリスト(例: 'ROLE_A、ROLE_B')。

  • 方法メソッド名

LDAP名前空間オプション

LDAPはでいくつかの詳細をカバーしています 独自の章 。いくつかの説明で、名前空間をSpringBeanにマッピングするためのオプションを拡張します。 LDAPはSpringLDAPを使用して広く実装されているため、プロジェクトに精通しているAPIが役立つ場合があります。

LDAPサーバーの使用法を定義する

要素この要素は、Spring LDAP DefaultSpringSecurityContextSource他のLDAP Beanに使用され、LDAPサーバーの場所とそれに接続するための他の情報(匿名アクセスが許可されていない場合はユーザー名とパスワードなど)を定義します。また、テスト用の組み込みサーバーを作成するためにも使用できます。 2つのオプション文法の詳細は次のとおりです。 LDAPの章 。実際LdapContextSource実装はmanager-dn SpringLDAPの拡張manager-passwordカテゴリuserDn password属性は背面にマップされますserver-ref ContextSourceプロパティを個別に使用します。

サーバーがアプリケーションコンテキストで定義されている場合、他のLDAP名前空間で定義されたBeanが自動的に使用されます。それ以外の場合は、この要素に「id」属性を指定し、他の名前空間Beanから参照してLdapAuthenticationProvider属性を使用できます。これは実際にはExample and a `DefaultAuthoritiesPopulator他の従来のSpringBeanで使用する場合はBeanIDインスタンスです。

属性
  • idBeanのコンテキストを指すために使用されるBean識別子。

  • ldifLDIFファイルリソースが組み込みLDAPサーバーにロードされることを明示的に指定します。 ldifはSpringリソースモードである必要があります(つまり、クラスパス:init.ldiff)。デフォルトはclasspath *:*。ldiffです。

  • manager-dnユーザー名(DN)の「manager」ユーザーIDは、LDAPサービスを認証する(埋め込まれていない)ために使用されます。省略した場合、匿名アクセスが使用されます。

  • マネージャー-パスワードパスワードマネージャーDN。これは、manager-dnが指定されている場合に必要です。

  • IPポート番号を指定します。たとえば、組み込みLDAPサーバーを構成するために使用されます。デフォルト値は33389です。

  • ルート組み込みLDAPサーバーのオプションのルートサフィックス。デフォルトは「dc = springframework、dc = org」です。

  • URLLDAPサーバーのURLを指定する場合、組み込みLDAPサーバーは使用されません。

この要素は省略形ですauthentication-providerインスタンスの作成。デフォルトでは、これにより `bindauthenticator` DefaultLdapAuthoritiesPopulatorが構成されます。すべての名前空間認証プロバイダーと同様に、要素の子要素として含める必要がありますgroupRoleAttribute

親要素
属性
  • group-role-attributeロール名を含むLDAP属性名は、SpringSecurityで使用されます。 DefaultLdapAuthoritiesPopulator of groupSearchBase属性にマップします。デフォルトは「cn」です。

  • グループ検索ベースグループメンバー検索。マッピングDefaultLdapAuthoritiesPopulator of groupSearchFilterコンストラクターのパラメーター。デフォルトは ''(ルートから検索)です。

  • group-search-filterグループ検索フィルター。 DefaultLdapAuthoritiesPopulator属性のrolePrefixにマップします。デフォルトは(uniqueMember = {0})です。置換パラメータはユーザーのDNです。

  • ロールプレフィックス空でない文字列プレフィックスは、永続性からロードされた文字列に追加されます。 userDnPatterns of AbstractLdapAuthenticator属性にマップします。デフォルトは「ROLE_」です。デフォルトが空でない場合、プレフィックスのない値「none」が使用されます。

  • server-refオプションのサーバー使用。省略し、デフォルトで登録されているLDAPサービス(IDなしで使用)の場合、そのサーバーが使用されます。

  • user-context-mapper-refユーザー定義のロードオブジェクトが、userdetailscontextmapperBeanがユーザーディレクトリアイテムからのコンテキスト情報として参照されることを明示的に指定できるようにします。

  • user-details-classユーザーが指定するクラスを入力できるようにします。設定されている場合、フレームワークは、標準属性の定義されたクラスのオブジェクトをuserdetailsに読み戻そうとします。

  • user-dn-patternユーザーがディレクトリ内の固定された場所にいる場合(つまり、ディレクトリ検索を行わずにユーザー名DNから直接検索できる場合)、この属性を使用してDNに直接マップできます。 BindAuthenticatorに直接マップされます属性FilterBasedLdapUserSearch値は、ユーザーのDNを構築するために使用される特定のパターンです(例: 'uid = {0}、ou = people')。キー「{0}」が存在する必要があり、ユーザー名に置き換えられます。

  • ユーザー検索ベースユーザー検索ベースを検索します。デフォルトは ''です。 1つの「user-search-filter」のみが使用されます。

    ディレクトリ内のユーザーを見つけるために検索を実行する必要がある場合は、これらのプロパティを設定して検索を制御できます。user-search-filter='(uid={0})'構成しますuser-search-base=''そして属性値は最初の2つのパラメーターに直接マップされますBeanのコンストラクターの。これらの属性が設定されておらず、代替として「user-dn-pattern」が提供されていない場合、デフォルトの検索値BindAuthenticator FilterBasedLdapUserSearchで使用されます。

  • user-search-filterLDAPフィルターは、ユーザーの検索に使用されます(オプション)。たとえば、 '(uid = {0})'です。置き換えられるパラメーターは、ユーザーのログイン名です。

    ディレクトリ内のユーザーを見つけるために検索を実行する必要がある場合は、これらのプロパティを設定して検索を制御できます。user-dn-pattern構成しますuser-search-filter='(uid={0})'そして属性値はに直接マップされますBeanコンストラクターの最初の2つのパラメーター。これらの属性が設定されておらず、user-search-base=''に提供されていない場合は、デフォルトの検索値To with UserDetailsService使用されます。

子要素

子要素として使用され、bindauthenticatorからLdapUserDetailsService passwordcomparisonauthenticatorスイッチの認証戦略。

親要素
属性
  • ハッシュユーザーパスワードのハッシュアルゴリズムを定義します。 MD4は非常に弱いハッシュアルゴリズムであるため、使用しないことを強くお勧めします。

  • パスワード属性ユーザーのパスワードを含むディレクトリ内の属性。デフォルトは「userPassword」です。

子要素

この要素は、LDAP FilterBasedLdapUserSearchを構成します。使用されるクラスDefaultLdapAuthoritiesPopulatorはいaccesscontrollist with hasPermission()組み合わせ。同じ使用法などの属性をサポートします。

属性
  • cache-refUserDetailsS​​erviceのキャッシュへの参照を定義します。

  • group-role-attributeロール名を含むLDAP属性名は、SpringSecurityに使用されます。デフォルトは「cn」です。

  • グループ検索ベースグループメンバー検索。デフォルトは ''(ルートから検索)です。

  • group-search-filterグループフィルターサーチャー。デフォルトは(uniqueMember = {0})です。代替パラメーターはユーザーのDNです。

  • idBeanのコンテキストを指すために使用されるBean識別子。

  • ロールプレフィックス空でない文字列プレフィックスが、永続性からロードされた文字列に追加されます(たとえば、「ROLE_」)。デフォルトが空でない場合は、プレフィックスなしで値「none」を使用します。

  • server-refオプションのサーバー使用。省略した場合、およびデフォルトで登録されているLDAPサーバー(IDなしで使用)の場合、サーバーが使用されます。

  • user-context-mapper-refロード可能なユーザーオブジェクトを指定してUserDetailsContextMapperBeanを明示的にカスタマイズすることにより、コンテキスト情報はユーザーのディレクトリエントリから呼び出されます。

  • user-details-classユーザーが指定されたオブジェクトクラスを入力できるようにします。設定されている場合、フレームワークは標準属性の定義されたクラスのオブジェクトをロードしようとし、UserDetailsに戻ります

  • ユーザー検索ベースユーザー検索ベースを検索します。デフォルトは ''です。 1つの「user-search-filter」のみが使用されます。

  • user-search-filterLDAPフィルターは、ユーザーの検索に使用されます(オプション)。たとえば、 '(uid = {0})'です。置き換えられるパラメーターは、ユーザーのログイン名です。

SpringSecurityの依存関係

彼の付録には、SpringSecurityリファレンスモジュールと追加の依存関係が記載されています。それらには、実行中のアプリケーションの機能が必要です。 SpringSecurity自体の構築またはテストにのみ使用される依存関係は含まれていません。また、依存関係も含まれていません。必要な外部依存関係。

必要なSpringバージョンはプロジェクトのWebサイトにリストされているため、Spring依存関係の下の特定のバージョンは省略されています。 'オプションの'依存関係としてリストされている以下のいくつかは、Springアプリケーションに存在する必要がある場合があることに注意してください。その他の安全でない機能。それらがほとんどのアプリケーションで使用されている場合、「オプション」としてもリストされている依存関係は、プロジェクトで実際にはMavenPOMファイルとしてマークされない場合があります。それらは「オプション」であるという意味でのみ「オプション」であり、指定された機能を使用しない限り、それらは必要ないという意味でのみです。

モジュールの1つは別のSpringSecurityモジュールに依存しており、モジュールのオプションではない依存関係は、必要であると想定され、個別にリストされていないものに依存します。

春のセキュリティコア

Spring Securityコアモジュールの使用は、すべてのプロジェクトに含まれている必要があります。

表4.コアの依存関係
依存 バージョン 説明

aopalliance

1.0

必要なセキュリティの実装方法。

ehcache

1.6.2

ehcacheベースのユーザーキャッシュの実装が必要です(オプション)。

春のaop

SpringAOPに基づくメソッドセキュリティ

春豆

Spring構成に必要

春の表現

式ベースのメソッドセキュリティ(オプション)

春-jdbc

データベースを使用してユーザーデータを保存する必要がある場合(オプション)。

春-テキサス

データベースを使用してユーザーデータを保存する必要がある場合(オプション)。

アスペクトjrt

1.6.10

AspectJサポートを使用する必要がある場合(オプション)。

jsr250-api

1.0

JSR-250メソッドのセキュリティアノテーションを使用する必要がある場合(オプション)。

春-セキュリティ-リモーティング

このモジュールでは通常、WebアプリケーションでサーブレットAPIを使用する必要があります。

表5.リモーティングの依存関係
依存 バージョン 説明

春のセキュリティコア

春のウェブ

HTTPを使用するお客様が必要とするリモートサポート。

春-セキュリティ-ウェブ

このモジュールでは通常、WebアプリケーションでサーブレットAPIを使用する必要があります。

表6.Webの依存関係
依存 バージョン 説明

春のセキュリティコア

春のウェブ

SpringWebサポートクラスは広く使用されています。

春-jdbc

JDBCベースのログインフリータグライブラリが必要です(オプション)。

春-テキサス

ログイン不要の永続タグライブラリ(オプション)を介して実装する必要があります。

spring-security-ldap

このモジュールは、必要に応じてLDAP認証を使用します。

表7.LDAPの依存関係
依存 バージョン 説明

春のセキュリティコア

spring-ldap-core

1.3.0

LDAPはSpringLDAPでのみサポートされています。

春-テキサス

データ例外クラスが必要です。

apache-ds[ 13 ]

1.5.5

必要に応じて、組み込みLDAPサーバーを使用します(オプション)。

shared-ldap

0.9.15

組み込みLDAPサーバーを使用する必要がある場合(オプション)。

ldapsdk

4.1

MozillaLdapSDK。 OpenLDAPのパスワードポリシー機能を使用する場合、たとえば、LDAPパスワードポリシー制御をデコードするために使用されます。

spring-security-config

このモジュールは、SpringSecurity名前空間を使用する必要がある場合の構成です。

表8.構成の依存関係
依存 バージョン 説明

春のセキュリティコア

春-セキュリティ-ウェブ

Web関連の名前空間構成を使用する必要がある場合(オプション)。

spring-security-ldap

LDAP名前空間オプションを使用する必要がある場合(オプション)。

春-セキュリティ-openid

OpenID認証を使用する必要がある場合(オプション)。

アスペクトjweaver

1.6.10

名前空間の構文ポイントを保護する必要がある場合(オプション)。

spring-security-acl

ACLモジュール。

表9.ACLの依存関係
依存 バージョン 説明

春のセキュリティコア

ehcache

1.6.2

ACLベースのEhcacheキャッシュを実装する必要がある場合(独自の実装を使用している場合はオプション)。

春-jdbc

デフォルトのJDBCベースのaclserviceを使用する必要がある場合(独自に実装する場合はオプション)。

春-テキサス

デフォルトのJDBCベースのaclServiceAclServiceを使用する必要がある場合(独自に実装する場合はオプション)。

春-セキュリティ-cas

CASモジュールは、統合されたJA-SIGCASを提供します。

表10.CASの依存関係
依存 バージョン 説明

春のセキュリティコア

春-セキュリティ-ウェブ

ケース-クライアント-コア

3.1.12

JA-SIGCASクライアント。これがSpringSecurity統合の基盤です。

ehcache

1.6.2

Ehcacheタグをキャッシュする必要がある場合(オプション)。

春-セキュリティ-openid

OpenIDモジュール。

表11.OpenIDの依存関係
依存 バージョン 説明

春のセキュリティコア

春-セキュリティ-ウェブ

openid4java-nodeps

0.9.6

Spring SecurityのOpenID統合は、OpenID4Javaを使用します。

httpclient

4.1.1

openid4java-nodepsはHttpClient4に依存します。

guice

2.0

openid4java-nodepsはGuice2に依存しています。

春-セキュリティ-taglibs

SpringSecurityのJSPタグの実装を提供します。

表12.Taglibの依存関係
依存 バージョン 説明

春のセキュリティコア

春-セキュリティ-ウェブ

spring-security-acl

filter-chain-mapマークまたはrequest-matcher-ref ACLS式を使用する必要がある場合(オプション)。

春の表現

タグアクセス制限でSPEL式を使用する必要がある場合

インクルード:: _ include / faq.adoc []

インクルード:: _ include / migrating.adoc []


1 。応答が送信されると、セッションを作成することはできません 。この構文を使用するには、アプリケーションコンテキストに安全な名前空間のXMLファイルを含める必要があることに注意してください。古い構文は引き続きサポートされますrequestmatcherが、コンストラクターパラメーターの挿入は非推奨です。 3 。パスパターンの要件ではなく、The parameter is appended to the URL semicolon. However, the RFC allows the existence of any path segment in the URL of these parameters属性を使用してより強力な一致を指定できますFilterChainProxyの例 4 。このブラウザはCookieと `JSESSIONIDをサポートしていないことにお気づきかもしれません。/securehack=1/somefile.htmlhack=2 5 。退会を要求されると/secure/somefile.htmlの元の値が返され、引き続きアプリケーションに提供されます。 6 。したがって、たとえば、元の要求パスHttpSessionContextIntegrationFilterHttpSessionSecurityContextRepositoryとして返されます。 7 。 SecurityContextHolderに本体が含まれるように使用しました。本体は、ユーザーに役立つ情報を表示するために使用できます。 Spring Securityの古いバージョンでは、サーブレットコンテナに403エラーメッセージを処理させましたが、この有用なコンテキスト情報が不足していました。 8 。 Spring Security 2.0以前のバージョンでは、このフィルターはAuthenticationProcessingFilterと呼ばれます。ストレージとストレージに関するすべての作業は、フィルター自体によって実行されます。このクラスに精通している場合は、利用可能な構成オプションのほとんどがAuthenticationProcessingFilterEntryPoint turnupにあります。 9 歴史的な理由から、Spring Security 3.0より前は、このフィルターはDigestAuthenticationFilter.passwordAlreadyEncodedと呼ばれていました。エントリポイントはtrueと呼ばれていました。フレームワークは現在、さまざまな形式の認証をサポートしているため、3.0ではより具体的な名前が付けられました。 10 バージョン3.0より前のこの時点で、アプリケーションプロセスは、このクラスとストラテジープラグインのプロパティを組み合わせて制御する段階に進化しました。 3.0でコードをリファクタリングするという決定は、これら2つの戦略に完全な責任を負わせます。 十一 。 16進数でコード化されたパスワード形式(MD5(username:realm:password))apacheds-core Set as apacheds-core-entryで提供することができます。ただし、他のパスワードエンコーディングはダイジェスト認証を使用しません。 12 。基本的に、有効なログイン名が不必要に公開されるのを防ぐために、ユーザー名はCookieに含まれていません。この記事について説明しているコメントセクションがあります。 13 。モジュールapacheds-protocol-sharedapacheds-protocol-ldapapacheds-server-jndi
|_+_|
および
|_+_|
転送元:https://springcloud.cc/spring-security-zhcn.html#what-is-acegi-security