Web アプリケーションセキュリティ
<debug>
Spring Security デバッグインフラストラクチャを有効にします。これにより、人間が読める(複数行の)デバッグ情報が提供され、セキュリティフィルターに送られるリクエストを監視できます。これには、リクエストパラメーターやヘッダーなどの機密情報が含まれる場合があり、開発環境でのみ使用する必要があります。
<http>
アプリケーション内で <http>
要素を使用すると、"springSecurityFilterChain" という名前の FilterChainProxy
Bean が作成され、要素内の構成を使用して FilterChainProxy
内にフィルターチェーンが構築されます。Spring Security 3.1 以降では、追加の http
要素を使用して、追加のフィルターチェーン [ 1 ] を追加できます。これは、web.xml
からのマッピングを設定する方法です。一部のコアフィルターは常にフィルターチェーンに作成され、その他のフィルターは、存在する属性と子要素に応じてスタックに追加されます。標準フィルターの位置は固定されており (名前空間の概要のフィルター順序テーブルを参照)、以前のバージョンのフレームワークでユーザーがフィルターチェーンを FilterChainProxy
Bean で明示的に構成する必要があった場合によく発生していたエラーの原因がなくなりました。もちろん、構成を完全に制御する必要がある場合は、これを実行できます。
AuthenticationManager
への参照を必要とするすべてのフィルターには、名前空間構成によって作成された内部インスタンスが自動的に挿入されます。
各 <http>
名前空間ブロックは、常に SecurityContextPersistenceFilter
、ExceptionTranslationFilter
および FilterSecurityInterceptor
を作成します。これらは修正されており、代替に置き換えることはできません。
<http> の属性
<http>
要素の属性は、コアフィルターの一部のプロパティを制御します。
access-decision-manager-ref HTTP リクエストの承認に使用される
AccessDecisionManager
実装の ID を指定するオプションの属性。デフォルトでは、AffirmativeBased
実装はRoleVoter
およびAuthenticatedVoter
で使用されます。
authentication-manager-ref この http 要素によって作成された
FilterChain
に使用されるAuthenticationManager
への参照。
観察レジストリ参照
FilterChain
および関連コンポーネントに使用されるObservationRegistry
への参照
auto-config ログインフォーム、基本認証、ログアウトサービスを自動的に登録します。"true" に設定すると、これらの機能がすべて追加されます(ただし、それぞれの要素を指定することで、それぞれの構成をカスタマイズできます)。指定しない場合、デフォルトは "false" です。この属性の使用は推奨されません。混乱を避けるために、代わりに明示的な構成要素を使用してください。
create-session Spring Security クラスによって HTTP セッションが作成される際の先行さを制御します。オプションが含まれます:
always
- Spring Security は、セッションが存在しない場合、積極的にセッションを作成します。ifRequired
- Spring Security は、セッションが必要な場合にのみセッションを作成します(デフォルト値)。never
- Spring Security はセッションを作成しませんが、アプリケーションが作成した場合はセッションを使用します。stateless
- Spring Security はセッションを作成せず、SpringAuthentication
を取得するためのセッションを無視します。
disable-url-rewriting セッション ID がアプリケーションの URL に追加されないようにします。この属性が
true
に設定されている場合、クライアントは Cookie を使用する必要があります。デフォルトはtrue
です。
entry-point-ref 通常、使用される
AuthenticationEntryPoint
は、設定されている認証メカニズムに応じて設定されます。この属性により、認証プロセスを開始するカスタマイズされたAuthenticationEntryPoint
Bean を定義することにより、この動作をオーバーライドできます。
jaas-api-provision 使用可能な場合、
JaasApiIntegrationFilter
Bean をスタックに追加することによって実装されるJaasAuthenticationToken
から取得したSubject
としてリクエストを実行します。デフォルトはfalse
です。
name Bean 識別子。コンテキストの他の場所で Bean を参照するために使用されます。
once-per-request
FilterSecurityInterceptor
のobserveOncePerRequest
プロパティに対応します。デフォルトはfalse
です。
filter-all-dispatcher-types
AuthorizationFilter
のshouldFilterAllDispatcherTypes
プロパティに対応します。use-authorization-manager=false
の場合は機能しません。デフォルトはtrue
です。
pattern http 要素のパターンを定義すると、定義するフィルターのリストを介してフィルターされるリクエストが制御されます。解釈は、構成された request-matcher に依存します。パターンが定義されていない場合、すべてのリクエストが一致するため、最も具体的なパターンを最初に宣言する必要があります。
realm 基本認証に使用されるレルム名を設定します(有効な場合)。
BasicAuthenticationEntryPoint
のrealmName
プロパティに対応します。
request-matcher
FilterChainProxy
で使用されるRequestMatcher
戦略と、受信リクエストを照合するためにintercept-url
によって作成される Bean を定義します。オプションは現在、それぞれ Spring MVC、ant、正規表現、大文字と小文字を区別しない正規表現のmvc
、ant
、regex
、ciRegex
です。pattern、method、および servlet-path 属性を使用して、intercept-url 要素ごとに個別のインスタンスが作成されます。Ant パスはAntPathRequestMatcher
を使用して一致し、正規表現はRegexRequestMatcher
を使用して一致し、Spring MVC パス一致の場合はMvcRequestMatcher
が使用されます。マッチングがどのように実行されるかについての詳細は、これらのクラスの Javadoc を参照してください。Spring MVC がクラスパスに存在する場合、MVC がデフォルトの戦略です。存在しない場合、Ant パスが使用されます。
request-matcher-ref この
FilterChain
を使用するかどうかを決定するRequestMatcher
を実装する Bean への参照。これは pattern のより強力な代替手段です。
security この属性を
none
に設定することにより、リクエストパターンを空のフィルターチェーンにマップできます。セキュリティは適用されず、Spring Security の機能は使用できません。
security-context-repository-ref カスタム
SecurityContextHolderStrategy
をSecurityContextPersistenceFilter
、SecurityContextHolderFilter
、BasicAuthenticationFilter
、UsernamePasswordAuthenticationFilter
、ExceptionTranslationFilter
、LogoutFilter
などに挿入できるようにします。
security-context-explicit-save true の場合、
SecurityContextPersistenceFilter
の代わりにSecurityContextHolderFilter
を使用します。明示的な保存が必要
security-context-repository-ref カスタム
SecurityContextRepository
のSecurityContextPersistenceFilter
への注入を許可します。
servlet-api-provision
SecurityContextHolderAwareRequestFilter
Bean をスタックに追加することで実装されるisUserInRole()
やgetPrincipal()
などのHttpServletRequest
セキュリティメソッドのバージョンを提供します。デフォルトはtrue
です。
use-expressions 式 ベースのアクセス制御の章に従って、
access
属性で EL 式を有効にします。デフォルト値は true です。
<access-denied-handler>
この要素を使用すると、エラーページ属性を使用して ExceptionTranslationFilter
で使用されるデフォルトの AccessDeniedHandler
の errorPage
プロパティを設定したり、ref 属性を使用して独自の実装を提供したりできます。これについては、ExceptionTranslationFilter のセクションで詳しく説明します。
<cors>
この要素により、CorsFilter
を構成できます。CorsFilter
または CorsConfigurationSource
が指定されておらず、Spring MVC がクラスパス上にある場合、HandlerMappingIntrospector
が CorsConfigurationSource
として使用されます。
<cors> 属性
<cors>
要素の属性は、headers 要素を制御します。
ref
CorsFilter
の Bean 名を指定するオプションの属性。
cors-configuration-source-ref XML 名前空間によって作成された
CorsFilter
に挿入されるCorsConfigurationSource
の Bean 名を指定するオプションの属性。
<headers>
この要素を使用すると、追加の(セキュリティ)ヘッダーをレスポンスとともに送信するように構成できます。これにより、複数のヘッダーを簡単に構成でき、ヘッダー要素を介してカスタムヘッダーを設定することもできます。追加情報は、リファレンスのセキュリティヘッダーセクションにあります。
Cache-Control
、Pragma
、Expires
- cache-control 要素を使用して設定できます。これにより、ブラウザーが保護されたページをキャッシュしないようになります。Strict-Transport-Security
- hsts 要素を使用して設定できます。これにより、将来のリクエストに対してブラウザーが HTTPS を自動的にリクエストします。X-Frame-Options
- frame-options 要素を使用して設定できます。X-Frame-Options [Wikipedia] ヘッダーは、クリックジャック攻撃を防ぐために使用できます。X-XSS-Protection
- xss-protection 要素を使用して設定できます。X-XSS-Protection [Wikipedia] ヘッダーは、基本的な制御を行うためにブラウザーで使用できます。X-Content-Type-Options
- content-type-options 要素を使用して設定できます。X-Content-Type-Options (英語) ヘッダーは、Internet Explorer が宣言されたコンテンツ型からレスポンスを MIME スニッフィングすることを防ぎます。これは、拡張機能をダウンロードする場合、Google Chrome にも当てはまります。Public-Key-Pinning
またはPublic-Key-Pinning-Report-Only
- hpkp 要素を使用して設定できます。これにより、HTTPS Web サイトは、誤って発行された証明書または不正な証明書を使用した攻撃者によるなりすましに抵抗できます。Content-Security-Policy
またはContent-Security-Policy-Report-Only
- content-security-policy エレメントを使用して設定できます。コンテンツセキュリティポリシー (CSP) [W3C] (英語) は、クロスサイトスクリプティング(XSS)などのコンテンツインジェクションの脆弱性を軽減するために Web アプリケーションが活用できるメカニズムです。Referrer-Policy
- referrer -policy 要素を使用して設定できます。リファラーポリシー [W3C] (英語) は、Web アプリケーションがリファラーフィールドを管理するために利用できるメカニズムです。リファラーフィールドには、ユーザーが最後にアクセスしたページが含まれます。Feature-Policy
- feature-policy エレメントを使用して設定できます。機能ポリシー (英語) は、Web 開発者がブラウザーの特定の API および Web 機能の動作を選択的に有効化、無効化、変更できるメカニズムです。Cross-Origin-Opener-Policy
- cross-origin-opener-policy 要素を使用して設定できます。Cross-Origin-Opener-Policy [Mozilla] は、トップレベルのドキュメントがクロスオリジンドキュメントとブラウジングコンテキストグループを共有しないようにするメカニズムです。Cross-Origin-Embedder-Policy
- cross-origin- embedder-policy 要素を使用して設定できます。Cross-Origin-Embedder-Policy [Mozilla] は、ドキュメントに明示的にアクセス許可を付与しないクロスオリジンリソースをドキュメントがロードしないようにするメカニズムです。Cross-Origin-Resource-Policy
- Cross-Origin-Resource-Policy [Mozilla] は、cross-origin-resource-policy 要素を使用して設定でき、ブラウザーが指定されたリソースへの no-cors cross-origin/cross-site リクエストをブロックするというリクエストを伝えるメカニズムです。
<headers> 属性
<headers>
要素の属性は、headers 要素を制御します。
defaults-disabled デフォルトの Spring Security の HTTP レスポンスヘッダーを無効にすることを指定するオプションの属性。デフォルトは false です(デフォルトのヘッダーが含まれます)。
disabled Spring Security の HTTP レスポンスヘッダーを無効にすることを指定するオプションの属性。デフォルトは false です(ヘッダーは有効です)。
<cache-control>
<hsts>
有効にすると、Strict-Transport-Security [IETF] (英語) ヘッダーが安全なリクエストのレスポンスに追加されます。これにより、サーバーは、将来のリクエストで HTTPS を自動的に使用するようブラウザーに指示できます。
<hsts> の属性
disabled Strict-Transport-Security を無効にするかどうかを指定します。デフォルトは false。
include-sub-domains サブドメインを含めるかどうかを指定します。デフォルトは true。
max-age-seconds ホストが既知の HSTS ホストと見なされる最大時間を指定します。デフォルトは 1 年。
request-matcher-ref ヘッダーを設定する必要があるかどうかを判断するために使用される RequestMatcher インスタンス。デフォルトは、HttpServletRequest.isSecure() が true の場合です。
preload プリロードを含めるかどうかを指定します。デフォルトは false。
<hpkp>
有効にすると、HTTP の公開鍵固定拡張 [IETF] (英語) ヘッダーが安全なリクエストのレスポンスに追加されます。これにより、HTTPS Web サイトは、誤って発行された証明書または不正な証明書を使用した攻撃者によるなりすましに抵抗できます。
<hpkp> の属性
disabled HTTP 公開鍵固定(HPKP)を無効にするかどうかを指定します。デフォルトは true。
include-sub-domains サブドメインを含めるかどうかを指定します。デフォルトは false。
max-age-seconds Public-Key-Pins ヘッダーの max-age ディレクティブの値を設定します。デフォルトは 60 日です。
report-only ブラウザーがピン検証の失敗のみを報告するかどうかを指定します。デフォルトは true。
report-uri ブラウザーがピン検証の失敗を報告する URI を指定します。
<content-security-policy>
有効にすると、コンテンツセキュリティポリシー (CSP) [W3C] (英語) ヘッダーがレスポンスに追加されます。CSP は、クロスサイトスクリプティング(XSS)など、Web アプリケーションがコンテンツインジェクションの脆弱性を軽減するために活用できるメカニズムです。
<content-security-policy> の属性
policy-directives Content-Security-Policy ヘッダーのセキュリティポリシーディレクティブ、または report-only が true に設定されている場合、Content-Security-Policy-Report-Only ヘッダーが使用されます。
report-only true に設定すると、ポリシー違反のみを報告するために Content-Security-Policy-Report-Only ヘッダーが有効になります。デフォルトは false です。
<referrer-policy>
有効にすると、リファラーポリシー [W3C] (英語) ヘッダーがレスポンスに追加されます。
<feature-policy>
有効にすると、機能ポリシー (英語) ヘッダーがレスポンスに追加されます。
<frame-options>
有効にすると、X-Frame-Options ヘッダー [IETF] (英語) がレスポンスに追加されます。これにより、新しいブラウザーはセキュリティチェックを行い、クリックジャック [Wikipedia] 攻撃を防ぐことができます。
<frame-options> 属性
無効にすると、X-Frame-Options ヘッダーは含まれません。デフォルトは false。
ポリシー
DENY
サイトは、フレームを表示しようとしているかどうかにかかわらず、フレームに表示できません。これは、frame-options-policy が指定されている場合のデフォルトです。SAMEORIGIN
ページは、ページ自体と同じ原点のフレームにのみ表示できます
つまり、DENY を指定すると、他のサイトからロードされたときにフレーム内のページのロードが失敗するだけでなく、同じサイトからロードされたときにも失敗します。一方、SAMEORIGIN を指定した場合、フレームにページを含むサイトがページを提供しているサイトと同じである限り、フレームでページを使用できます。
<permissions-policy>
権限 - ポリシーヘッダー (英語) をレスポンスに追加します。
<xss-protection>
X-XSS-Protection ヘッダー (英語) をレスポンスに追加して、型 1/ 反射型クロスサイトスクリプティング (XSS) [Wikipedia] 攻撃からの保護を支援します。これは決して XSS 攻撃に対する完全な保護ではありません!
<xss-protection> 属性
xss-protection-disabled 型 1/ 反射型クロスサイトスクリプティング (XSS) [Wikipedia] 保護のヘッダーを含めないでください。
xss-protection-header-value 明示的に型 1/ 反射型クロスサイトスクリプティング (XSS) [Wikipedia] ヘッダーの値を設定します。"0"、"1"、"1; mode=block" のいずれか。デフォルトは "0" です。
<content-type-options>
レスポンスに nosniff の値を持つ X-Content-Type-Options ヘッダーを追加します。これにより、IE8 + および Chrome 拡張の MIME スニッフィングが無効になります (英語) 。
<content-type-options> の親要素
<cross-origin-embedder-policy>
有効にすると、Cross-Origin-Embedder-Policy [Mozilla] ヘッダーがレスポンスに追加されます。
<cross-origin-opener-policy>
有効にすると、Cross-Origin-Opener-Policy [Mozilla] ヘッダーがレスポンスに追加されます。
<cross-origin-resource-policy>
有効にすると、Cross-Origin-Resource-Policy [Mozilla] ヘッダーがレスポンスに追加されます。
<header>
<anonymous>
AnonymousAuthenticationFilter
をスタックに追加し、AnonymousAuthenticationProvider
を追加します。IS_AUTHENTICATED_ANONYMOUSLY
属性を使用している場合は必須。
<anonymous> 属性
enabled デフォルトのネームスペースのセットアップでは、匿名の「認証」機能が自動的に有効になります。このプロパティを使用して無効にできます。
key プロバイダーとフィルター間で共有されるキー。通常、これを設定する必要はありません。設定されていない場合、デフォルトで安全にランダムに生成された値になります。つまり、この値を設定すると、匿名機能を使用する際に、セキュアなランダム値が生成されるまでに時間がかかるため、起動時間が改善されます。
username 匿名リクエストに割り当てられるユーザー名。これにより、プリンシパルを識別できます。これは、ロギングおよび監査に重要な場合があります。設定しない場合、デフォルトは
anonymousUser
になります。
<csrf>
この要素は、クロスサイトリクエストフォージェリー (CSRF) [Wikipedia] 保護をアプリケーションに追加します。また、デフォルトの RequestCache を更新して、認証が成功したときにのみ "GET" リクエストを再生します。追加情報は、リファレンスのクロスサイトリクエストフォージェリ (CSRF) セクションにあります。
<csrf> の属性
disabled Spring Security の CSRF 保護を無効にすることを指定するオプションの属性。デフォルトは false です(CSRF 保護は有効です)。CSRF 保護を有効のままにしておくことを強くお勧めします。
token-repository-ref 使用する CsrfTokenRepository。デフォルトは
HttpSessionCsrfTokenRepository
です。
request-handler-ref 使用するオプションの
CsrfTokenRequestHandler
。デフォルトはCsrfTokenRequestAttributeHandler
です。
request-matcher-ref CSRF を適用する必要があるかどうかを判断するために使用される RequestMatcher インスタンス。デフォルトは、"GET"、"TRACE"、"HEAD"、"OPTIONS" を除く任意の HTTP メソッドです。
<custom-filter>
この要素は、フィルターチェーンにフィルターを追加するために使用されます。追加の Bean は作成されませんが、アプリケーションコンテキストですでに定義されている型 jakarta.servlet.Filter
の Bean を選択し、Spring Security によって維持されるフィルターチェーンの特定の位置に追加するために使用されます。詳細については、名前空間の章を参照してください。
<custom-filter> 属性
after チェーンにカスタムフィルターを配置する直後のフィルター。この機能は、独自のフィルターをセキュリティフィルターチェーンにミックスし、標準の Spring Security フィルターの知識がある上級ユーザーのみが必要とします。フィルター名は、特定の Spring Security 実装フィルターにマップされます。
before チェーンにカスタムフィルターを配置する直前のフィルター
position チェーンでカスタムフィルターを配置する明示的な位置。標準フィルターを交換する場合に使用します。
ref
Filter
を実装する Spring Bean への参照を定義します。
<expression-handler>
<form-login>
UsernamePasswordAuthenticationFilter
をフィルタースタックに追加し、LoginUrlAuthenticationEntryPoint
をアプリケーションコンテキストに追加して、オンデマンドで認証を提供するために使用されます。これは、他の名前空間で作成されたエントリポイントよりも常に優先されます。属性が指定されていない場合、ログインページは URL "/login" [ 2 ] で自動的に生成されます。動作は、<form-login>
属性を使用してカスタマイズできます。
<form-login> 属性
always-use-default-target
true
に設定されている場合、ユーザーはログインページへの到着方法に関係なく、常に default-target-url で指定された値から開始します。UsernamePasswordAuthenticationFilter
のalwaysUseDefaultTargetUrl
プロパティにマップします。デフォルト値はfalse
です。
authentication-details-source-ref 認証フィルターによって使用される
AuthenticationDetailsSource
への参照
authentication-failure-handler-ref authentication-failure-url の代替として使用でき、認証失敗後のナビゲーションフローを完全に制御できます。値は、アプリケーションコンテキストの
AuthenticationFailureHandler
Bean の名前である必要があります。
authentication-failure-url
UsernamePasswordAuthenticationFilter
のauthenticationFailureUrl
プロパティにマップします。ログイン失敗時にブラウザーがリダイレクトされる URL を定義します。デフォルトは/login?error
であり、これは自動ログインページジェネレーターによって自動的に処理され、エラーメッセージでログインページを再レンダリングします。
authentication-success-handler-ref これは default-target-url および always-use-default-target の代替として使用でき、認証が成功した後のナビゲーションフローを完全に制御できます。値は、アプリケーションコンテキストの
AuthenticationSuccessHandler
Bean の名前である必要があります。デフォルトでは、SavedRequestAwareAuthenticationSuccessHandler
の実装が使用され、default-target-url が挿入されます。
default-target-url
UsernamePasswordAuthenticationFilter
のdefaultTargetUrl
プロパティにマップします。設定されていない場合、デフォルト値は "/" (アプリケーションルート)です。ユーザーは、ログイン後にこの URL に移動します。ただし、保護されたリソースにアクセスしようとしてログインを求められなかった場合、最初にリクエストされた URL に移動します。
login-page ログインページのレンダリングに使用する必要のある URL。
LoginUrlAuthenticationEntryPoint
のloginFormUrl
プロパティにマップします。デフォルトは "/login" です。
login-processing- url
UsernamePasswordAuthenticationFilter
のfilterProcessesUrl
プロパティにマップします。デフォルト値は "/login" です。
password-parameter パスワードを含むリクエストパラメーターの名前。デフォルトは "password" です。
username-parameter ユーザー名を含むリクエストパラメーターの名前。デフォルトは "username" です。
authentication-success-forward-url
ForwardAuthenticationSuccessHandler
をUsernamePasswordAuthenticationFilter
のauthenticationSuccessHandler
プロパティにマッピングします。
authentication-failure-forward-url
ForwardAuthenticationFailureHandler
をUsernamePasswordAuthenticationFilter
のauthenticationFailureHandler
プロパティにマッピングします。
<oauth2-login>
OAuth 2.0 ログイン機能は、OAuth 2.0 および / または OpenID Connect 1.0 プロバイダーを使用して認証サポートを構成します。
<oauth2-login> の属性
client-registration-repository-ref
ClientRegistrationRepository
への参照。
access-token-response-client-ref
OAuth2AccessTokenResponseClient
への参照。
user-service-ref
OAuth2UserService
への参照。
oidc-user-service-ref OpenID Connect
OAuth2UserService
への参照。
login-processing-url フィルターが認証リクエストを処理する URI。
login-page ユーザーをログインに送信するための URI。
authentication-success-handler-ref
AuthenticationSuccessHandler
への参照。
authentication-failure-handler-ref
AuthenticationFailureHandler
への参照。
jwt-decoder-factory-ref
OidcAuthorizationCodeAuthenticationProvider
によって使用されるJwtDecoderFactory
への参照。
<oauth2-client>
<client-registrations>
OAuth 2.0 または OpenID Connect 1.0 プロバイダーに登録されたクライアント(ClientRegistration)のコンテナー要素。
<client-registration>
OAuth 2.0 または OpenID Connect 1.0 プロバイダーに登録されたクライアントを表します。
<client-registration> の属性
registration-id
ClientRegistration
を一意に識別する ID。
client-id クライアント識別子。
client-secret クライアントの秘密。
client-authentication-method プロバイダーでクライアントを認証するために使用される方法。サポートされている値は、client_secret_basic、client_secret_post、private_key_jwt、client_secret_jwt、および none (パブリッククライアント) [IETF] (英語) です。
redirect-uri エンドユーザーがクライアントへのアクセスを認証および認可した後に、認可サーバーがエンドユーザーのユーザーエージェントをリダイレクトするクライアントの登録済みリダイレクト URI。
scope 認可リクエストフロー中にクライアントがリクエストしたスコープ(openid、メール、プロファイルなど)。
client-name クライアントに使用される説明的な名前。この名前は、自動生成されたログインページにクライアントの名前を表示するときなど、特定のシナリオで使用される場合があります。
provider-id 関連付けられたプロバイダーへの参照。
<provider>
要素を参照するか、共通プロバイダー(google、github、facebook、okta)のいずれかを使用できます。
<provider>
OAuth 2.0 または OpenID Connect 1.0 プロバイダーの構成情報。
<provider> 属性
provider-id プロバイダーを一意に識別する ID。
token-uri 認可サーバーのトークンエンドポイント URI。
user-info-uri 認証されたエンドユーザーのクレーム / 属性にアクセスするために使用される UserInfo エンドポイント URI。
user-info-authentication-method アクセストークンを UserInfo エンドポイントに送信するときに使用される認証方法。サポートされる値は、header、form、および query です。
user-info-user-name-attribute エンドユーザーの名前または識別子を参照する UserInfo レスポンスで返される属性の名前。
jwk-set-uri ID トークンの JSON Web 署名 (JWS) [IETF] (英語) およびオプションで UserInfo レスポンスを検証するために使用される暗号化キーを含む認可サーバーから JSON Web キー (JWK) [IETF] (英語) セットを取得するために使用される URI。
issuer-uri OpenID Connect プロバイダーの構成エンドポイント (英語) または認可サーバーのメタデータエンドポイント [IETF] (英語) のディスカバリを使用して
ClientRegistration
を最初に構成するために使用される URI。
<oauth2-resource-server>
<opaque-token>
Opaque トークンを認可する OAuth 2.0 リソースサーバーを表します
<opaque-token> の属性
introspector- ref
OpaqueTokenIntrospector
への参照。これは、introspection-uri
、client-id
、client-secret
をオーバーライドするより大きなコンポーネントです。
introspection-uri Introspection Uri は、Opaque トークンの詳細をイントロスペクションするために使用されていました。
client-id
およびclient-secret
を伴う必要があります。
client-id 提供された
introspection-uri
に対するクライアント認証に使用するクライアント ID。
client-secret 指定された
introspection-uri
に対するクライアント認証に使用するクライアントシークレット。
authentication-converter-ref
OpaqueTokenAuthenticationConverter
への参照。成功したイントロスペクションの結果をAuthentication
インスタンスに変換する責任があります。
<relying-party-registrations>
SAML 2.0 ID プロバイダーに登録された証明書利用者(ClientRegistration)のコンテナー要素。
<relying-party-registration>
SAML 2.0 IID プロバイダーに登録されている証明書利用者を表します
<relying-party-registration> 属性
registration-id
RelyingPartyRegistration
を一意に識別する ID。
メタデータの場所アサーティングパーティのメタデータの場所。
client-id 証明書利用者の EntityID (英語) 。
assertion-consumer-service-location AssertionConsumerService の場所。証明書利用者の
<SPSSODescriptor>
の<AssertionConsumerService Location="…"/>
にある値に相当します。
アサーション - コンシューマー - サービス -AssertionConsumerService バインディングのバインディング。証明書利用者の
<SPSSODescriptor>
の<AssertionConsumerService Binding="…"/>
にある値に相当します。サポートされている値は POST と REDIRECT です。
single-logout-service-location SingleLogoutService の場所。証明書利用者の <SPSSODescriptor> の <SingleLogoutService Location=" … "/> にある値に相当します。
single-logout-service-response-location SingleLogoutService ResponseLocation。証明書利用者の <SPSSODescriptor> の <SingleLogoutServiceResponseLocation=" … "/> にある値に相当します。
single-logout-service- binding SingleLogoutService バインディング。証明書利用者の <SPSSODescriptor> の <SingleLogoutService Binding=" … "/> にある値に相当します。サポートされている値は POST と REDIRECT です。
asserting-party-id 関連付けられたアサートパーティへの参照。
<asserting-party>
要素を参照する必要があります。
<asserting-party>
SAML 2.0 アサーティングパーティの設定情報。
<asserting-party> 属性
asserting-party-id アサート側を一意に識別する ID。
entity-id アサーティングパーティの EntityID
want-authn-requests-signed
WantAuthnRequestsSigned
設定。送信する前に、証明書利用者がAuthnRequest
に署名する必要があるというアサート側の設定を示します。
シングルサインオンサービスの場所 SingleSignOnService (英語) の場所。
シングルサインオンサービスバインディング SingleSignOnService (英語) バインディング。サポートされている値は POST および REDIRECT です。
signing-algorithms このアサートパーティの
org.opensaml.saml.ext.saml2alg.SigningMethod
アルゴリズムのリスト(優先順)。
single-logout-service-location SingleLogoutService の場所。アサート側の <IDPSSODescriptor> の <SingleLogoutService Location=" … "/> にある値に相当します。
single-logout-service-response-location SingleLogoutService ResponseLocation。アサート側の <IDPSSODescriptor> の <SingleLogoutServiceResponseLocation=" … "/> にある値に相当します。
single-logout-service- binding SingleLogoutService バインディング。アサート側の <IDPSSODescriptor> の <SingleLogoutService Binding=" … "/> にある値に相当します。サポートされている値は POST と REDIRECT です。
<http-basic>
<intercept-url>
この要素は、アプリケーションが関心を持つ URL パターンのセットを定義し、それらの処理方法を構成するために使用されます。FilterSecurityInterceptor
が使用する FilterInvocationSecurityMetadataSource
を構築するために使用されます。たとえば、特定の URL に HTTPS でアクセスする必要がある場合は、ChannelProcessingFilter
の構成も行います。指定されたパターンを受信リクエストと照合する場合、要素が宣言されている順序で照合が行われます。最も具体的なパターンを最初に、最も一般的なパターンを最後に配置する必要があります。
<intercept-url> の属性
access 定義された URL パターン / メソッドの組み合わせに対して
FilterInvocationSecurityMetadataSource
に保存されるアクセス属性をリストします。これは、セキュリティ構成属性(ロール名など)のコンマ区切りリストでなければなりません。
method 受信リクエストを照合するためにパターンおよびサーブレットパス(オプション)と組み合わせて使用される HTTP メソッド。省略した場合、どのメソッドも一致します。メソッドの有無にかかわらず同一のパターンが指定されている場合、メソッド固有の一致が優先されます。
pattern URL パスを定義するパターン。コンテンツは、含まれている http 要素の
request-matcher
属性に依存するため、Spring MVC がクラスパスにある場合はデフォルトで MVC マッチャーになります。
request-matcher-ref この
<intercept-url>
が使用されているかどうかを判断するために使用されるRequestMatcher
への参照。
require-channel 特定の URL パターンに HTTP または HTTPS でアクセスするかどうかに応じて、"http" または "https" を指定できます。または、優先度がない場合は、値 "any" を使用できます。この属性が
<intercept-url>
要素に存在する場合、ChannelProcessingFilter
がフィルタースタックに追加され、その追加の依存関係がアプリケーションコンテキストに追加されます。
<port-mappings>
構成が追加されると、これは SecureChannelProcessor
および InsecureChannelProcessor
Bean によって使用され、HTTP/HTTPS へのリダイレクトに使用されるポートが決定されます。
このプロパティは filter-security-metadata-source には無効です |
サーブレットパス受信リクエストを照合するためにパターンおよび HTTP メソッドと組み合わせて使用されるサーブレットパス。この属性は、request-matcher が "mvc" の場合にのみ適用できます。さらに、この値は、次の 2 つのユースケースでのみ必要です。1)
'/'
で始まるマッピングがあり、異なるHttpServlet
がServletContext
に登録されている 2 つ以上があります。2)パターンは、デフォルト(ルート)のHttpServlet
'/'
を除いて、登録されたHttpServlet
パスと同じ値で始まります。
このプロパティは filter-security-metadata-source には無効です |
<logout>
LogoutFilter
をフィルタースタックに追加します。これは SecurityContextLogoutHandler
で構成されます。
<logout> の属性
invalidate-session
SecurityContextLogoutHandler
のinvalidateHttpSession
にマップします。デフォルトは "true" であるため、ログアウト時にセッションは無効になります。
logout-success-url ログアウト後にユーザーが表示されるリンク先 URL。デフォルトは <form-login-login-page> /?logout (つまり、/login?logout)
この属性を設定すると、
SessionManagementFilter
に属性値で構成されたSimpleRedirectInvalidSessionStrategy
が挿入されます。無効なセッション ID が送信されると、戦略が呼び出され、構成された URL にリダイレクトされます。
logout-url ログアウトの原因となる URL(つまり、フィルターによって処理される URL)。デフォルトは "/logout" です。
success-handler-ref は、ログアウト後にナビゲーションを制御するために呼び出される
LogoutSuccessHandler
のインスタンスを提供するために使用できます。
<saml2-login>
SAML 2.0 ログイン機能は、SAML 2.0 サービスプロバイダーを使用して認証サポートを構成します。
<saml2-login> 属性
RelyingPartyRegistrationRepository
への relying -party-registration-repository-ref 参照。
authentication-request-repository- ref
Saml2AuthenticationRequestRepository
への参照。
authentication-request-context-resolver- ref
Saml2AuthenticationRequestResolver
への参照。
authentication-converter- ref
AuthenticationConverter
への参照。
login-processing-url フィルターが認証リクエストを処理する URI。
login-page ユーザーをログインに送信するための URI。
authentication-success-handler-ref
AuthenticationSuccessHandler
への参照。
authentication-failure-handler-ref
AuthenticationFailureHandler
への参照。
authentication-manager- ref
AuthenticationManager
への参照。
<saml2-logout>
SAML 2.0 シングルログアウト機能は、RP および AP によって開始される SAML 2.0 シングルログアウトのサポートを構成します。
<saml2-logout> 属性
logout-url 証明書利用者またはアサート側がログアウトをトリガーできる URL。
logout-request-url アサート側が SAML 2.0 ログアウトリクエストを送信できる URL。
logout-response-url アサーティングパーティが SAML 2.0 ログアウトレスポンスを送信できる URL。
RelyingPartyRegistrationRepository
への relying -party-registration-repository-ref 参照。
logout-request-validator- ref
Saml2LogoutRequestValidator
への参照。
logout-request-resolver- ref
Saml2LogoutRequestResolver
への参照。
logout-request-repository- ref
Saml2LogoutRequestRepository
への参照。
logout-response-validator- ref
Saml2LogoutResponseValidator
への参照。
logout-response-resolver- ref
Saml2LogoutResponseResolver
への参照。
<port-mappings>
デフォルトでは、PortMapperImpl
のインスタンスが設定に追加され、安全な URL と安全でない URL へのリダイレクトに使用されます。この要素は、そのクラスが定義するデフォルトのマッピングをオーバーライドするためにオプションで使用できます。各子 <port-mapping>
要素は、HTTP:HTTPS ポートのペアを定義します。デフォルトのマッピングは 80:443 および 8080:8443 です。これらをオーバーライドする例は、HTTPS にリダイレクトにあります。
<remember-me>
RememberMeAuthenticationFilter
をスタックに追加します。これは、属性設定に応じて、TokenBasedRememberMeServices
、PersistentTokenBasedRememberMeServices
、RememberMeServices
を実装するユーザー指定の Bean で構成されます。
<remember-me> 属性
authentication-success-handler-ref カスタムナビゲーションが必要な場合、
RememberMeAuthenticationFilter
のauthenticationSuccessHandler
プロパティを設定します。値は、アプリケーションコンテキストのAuthenticationSuccessHandler
Bean の名前である必要があります。
data-source-ref
DataSource
Bean への参照。これが設定されている場合、PersistentTokenBasedRememberMeServices
が使用され、JdbcTokenRepositoryImpl
インスタンスで構成されます。
remember-me-parameter remember-me 認証を切り替えるリクエストパラメーターの名前。デフォルトは "remember-me" です。
AbstractRememberMeServices
の「パラメーター」プロパティにマップします。
key
AbstractRememberMeServices
の "key" プロパティにマップします。remember-me cookie が 1 つのアプリケーション [ 3 ] 内でのみ有効であることを保証するために、一意の値に設定する必要があります。これが設定されていない場合、安全なランダム値が生成されます。安全なランダム値の生成には時間がかかることがあるため、この値を明示的に設定すると、remember-me 機能を使用する際の起動時間を改善できます。
services-alias 内部で定義された
RememberMeServices
を Bean エイリアスとしてエクスポートし、アプリケーションコンテキストの他の Bean で使用できるようにします。
services-ref フィルターで使用される
RememberMeServices
実装の完全な制御を許可します。値は、このインターフェースを実装するアプリケーションコンテキストの Bean のid
である必要があります。ログアウトフィルターを使用している場合は、LogoutHandler
も実装する必要があります。
token-repository-ref
PersistentTokenBasedRememberMeServices
を構成しますが、カスタムPersistentTokenRepository
Bean の使用を許可します。
token-validity-seconds
AbstractRememberMeServices
のtokenValiditySeconds
プロパティにマップします。remember-me cookie を有効にする期間を秒単位で指定します。デフォルトでは、14 日間有効です。
user-service-ref remember-me サービスの実装には
UserDetailsService
へのアクセスが必要であるため、アプリケーションコンテキストで定義されている必要があります。1 つしかない場合は、名前空間の構成によって自動的に選択および使用されます。複数のインスタンスがある場合、この属性を使用して明示的に Beanid
を指定できます。
<request-cache> 要素
<session-management>
セッション管理関連機能は、SessionManagementFilter
をフィルタースタックに追加することで実装されます。
<session-management> の属性
authentication-strategy-explicit-invocation この属性を true に設定すると、
SessionManagementFilter
が注入されず、SessionAuthenticationStrategy の明示的な呼び出しが必要になります。
invalid-session-url この属性を設定すると、
SessionManagementFilter
に属性値で構成されたSimpleRedirectInvalidSessionStrategy
が挿入されます。無効なセッション ID が送信されると、戦略が呼び出され、構成された URL にリダイレクトされます。
invalid-session-url SessionManagementFilter が使用する InvalidSessionStrategy インスタンスの注入を許可します。これまたは
invalid-session-url
属性のいずれかを使用しますが、両方は使用しません。
session-authentication-error-url SessionAuthenticationStrategy が例外を発生させたときに表示されるエラーページの URL を定義します。設定されていない場合、不正な (401) エラーコードがクライアントに返されます。認証が失敗した URL が優先されるフォームベースのログイン中にエラーが発生した場合、この属性は適用されないことに注意してください。
session-authentication-strategy-ref SessionManagementFilter によって使用される SessionAuthenticationStrategy インスタンスの注入を許可します
session-fixation-protection は、ユーザー認証時にセッション固定保護を適用する方法を示します。"none" に設定すると、保護は適用されません。"newSession" は、Spring セキュリティ関連属性のみが移行された新しい空のセッションを作成します。"migrateSession" は、新しいセッションを作成し、すべてのセッション属性を新しいセッションにコピーします。Servlet 3.1 (Java EE 7) 以降のコンテナーでは、"changeSessionId" を指定すると、既存のセッションが保持され、コンテナーが提供するセッション固定保護 (HttpServletRequest#changeSessionId()) が使用されます。Servlet 3.1 以降のコンテナーではデフォルトで "changeSessionId"、古いコンテナーでは "migrateSession" になります。古いコンテナーで "changeSessionId" を使用すると、例外がスローされます。
セッション固定保護が有効になっている場合、
SessionManagementFilter
には適切に構成されたDefaultSessionAuthenticationStrategy
が挿入されます。詳細については、このクラスの Javadoc を参照してください。
<concurrency-control>
同時セッション制御のサポートが追加され、ユーザーが持つことができるアクティブなセッションの数に制限を設けることができます。ConcurrentSessionFilter
が作成され、ConcurrentSessionControlAuthenticationStrategy
が SessionManagementFilter
とともに使用されます。form-login
要素が宣言されている場合、戦略オブジェクトも作成された認証フィルターに挿入されます。SessionRegistry
のインスタンス(ユーザーがカスタム Bean を使用することを望まない場合は SessionRegistryImpl
インスタンス)は、戦略で使用するために作成されます。
<concurrency-control> の属性
error-if-maximum-exceeded "true" に設定すると、ユーザーがセッションの最大許容数を超えようとすると、
SessionAuthenticationException
が発生します。デフォルトの動作では、元のセッションが期限切れになります。
expired-url ユーザーが許可されたセッションの数を超えて別の場所に再度ログインしたため、同時セッションコントローラーによって「期限切れ」になったセッションを使用しようとすると、ユーザーがリダイレクトされる URL。
exception-if-maximum-exceeded
が設定されていない限り、設定する必要があります。値が指定されていない場合、有効期限メッセージがレスポンスに直接書き込まれます。
expired-url ConcurrentSessionFilter によって使用される ExpiredSessionStrategy インスタンスの注入を許可します
max-sessions
ConcurrentSessionControlAuthenticationStrategy
のmaximumSessions
プロパティにマップします。無制限のセッションをサポートするには、値として-1
を指定します。
session-registry-alias また、独自の Bean または管理インターフェースで使用するために、内部セッションレジストリへの参照を持つことも役立ちます。
session-registry-alias
属性を使用して内部 Bean を公開し、構成の他の場所で使用できる名前を付けることができます。
session-registry-ref ユーザーは、
session-registry-ref
属性を使用して、独自のSessionRegistry
実装を提供できます。他の同時セッション制御 Bean は、それを使用するために接続されます。
<x509>
<filter-chain-map>
<filter-chain>
内で使用され、特定の URL パターンと、そのパターンに一致する URL に適用されるフィルターのリストを定義します。FilterChainProxy を構成するために複数のフィルターチェーン要素がリストにアセンブルされる場合、最も具体的なパターンをリストの一番上に配置し、最も一般的なパターンを一番下に配置する必要があります。
<filter-chain> 属性
フィルター
Filter
を実装する Spring Bean への参照のコンマ区切りリスト。値 "none" は、このFilterChain
にFilter
を使用しないことを意味します。
パターン リクエストマッチャーと組み合わせて RequestMatcher を作成するパターン
request-matcher-ref
RequestMatcher
への参照。filters
属性からFilter
を呼び出す必要があるかどうかを判断するために使用されます。
<filter-security-metadata-source>
FilterSecurityInterceptor で使用するために FilterSecurityMetadataSource Bean を明示的に構成するために使用されます。通常、<http> 要素を使用するのではなく、FilterChainProxy を明示的に構成する場合にのみ必要です。使用する intercept-url 要素には、パターン、メソッド、アクセス属性のみを含める必要があります。それ以外の場合は、構成エラーが発生します。
<filter-security-metadata-source> の属性
id Bean 識別子。コンテキストの他の場所で Bean を参照するために使用されます。
request-matcher 受信リクエストのマッチングに使用する戦略を定義します。現在、オプションは "ant" (ant パスパターンの場合)、"regex" (正規表現の場合)、"ciRegex" (大文字と小文字を区別しない正規表現の場合)です。
use-expressions 構成属性の従来のリストではなく、<intercept-url> 要素の "access" 属性で式の使用を有効にします。デフォルトは "true" です。有効にした場合、各属性には単一のブール式を含める必要があります。式が "true" と評価されると、アクセスが許可されます。
DefaultLoginPageGeneratingFilter
は、ログインページのレンダリングを担当し、必要に応じて、通常のフォームログインおよび / または OIDC の両方のログインフォームを提供します。PersistentTokenBasedRememberMeServices
の使用には影響しません。