上記でSpring Security の簡単な理解と使用に関するSpring Security
いくつかの知識ポイントをすでに学習しました。この記事では、そのコアクラスについて学びます。
セキュリティコンテキスト
SecurityContext
現在システムにアクセスしているユーザーの詳細情報を以下の2つの方法で取得します。
方法 | 説明する |
---|---|
getAuthentication() |
現在認証されているプリンシパルまたは認証されたリクエスト トークンを取得します |
setAuthentication() |
現在確認されている本人認証情報を変更または削除します |
セキュリティコンテキストホルダー
SecurityContextHolder
を保存するために使用されますSecurityContext
。最も一般的に使用されるgetContext()
方法は、現在の を取得するために使用されますSecurityContext
。
SecurityContextHolder
一連の静的メソッドは で定義されており、これらの静的メソッドの内部ロジックは、例えばSecurityContextHolder
holdingによってSecurityContextHolderStrategy
実現されますclearContext()
。
プロバイダーマネージャー
ProviderManager
携帯電話番号、ユーザーパスワード、電子メール方式など、システムには複数の認証方式が存在する可能性があるため、さまざまな認証方式の認証を処理するために認証のリストが維持されます。
認証中、ProviderManager
の認証結果が でない場合null
は、認証が成功したことを意味し、他の認証は行われず、 に認証結果として保存されますSecurityContext
。失敗した場合は、エラー メッセージがスローされますProviderNotFoundException
。
Dao認証プロバイダー
DaoAuthenticationProvider
これはAuthenticationProvider
最も一般的に使用される実装であり、ユーザーが送信したユーザー名とパスワードを取得し、それらが正しいかどうかを比較するために使用されます。正しければ、データベース内のユーザー情報を返します。
ユーザーの詳細
UserDetail
これはSpring Security
、ユーザー名、パスワード、権限、その他の情報を含むユーザー エンティティです。Spring Security
デフォルトでは、組み込みクラスはセキュリティ認証User
のために実装されています。Spring Security
もちろん、自分で実装することもできます。
UserDetails
次のメソッドが提供されています。
String getPassword()
: 認証されたユーザーのパスワードを返します 返せない場合は と表示されますnull
String getUsername()
: 認証されたユーザー名を返します。返せない場合は、次のように表示されます。null
boolean isAccountNonExpired()
: アカウントの有効期限が切れていますか? 有効期限が切れている場合は認証できませんboolean isAccountNonLocked()
: ユーザーがロックされているかロック解除されているかを指定します。ロックされたユーザーは認証できません。boolean isCredentialsNonExpired()
: ユーザーの資格情報 (パスワード) の有効期限が切れているかどうか、および期限切れの資格情報を認証できないかどうかを指定します。boolean isEnabled()
: 無効かどうかに関係なく、無効なユーザーは認証できません。
ユーザー詳細サービス
ユーザー関連の情報はUserDetailsService
インターフェースを通じてロードされます。このインターフェイスの唯一のメソッドは、loadUserByUsername(String username)
ユーザー名に基づいて関連情報をロードするために使用されます。戻り値はUserDetails
インターフェイスで、ユーザー名、パスワード、権限、有効かどうか、ロックされているかどうか、有効期限が切れているかどうかなどのユーザー情報が含まれます。
付与された権限
GrantedAuthority
メソッドは で定義されていますgetAuthority()
。このメソッドは、権限に対応する文字列を表す文字列を返します。対応する権限が文字列で表現できない場合に返しますnull
。
GrantedAuthority
インターフェイスはUserDetailsService
を介してロードされ、その後割り当てられますUserDetails
。
フィルター
Filter
ユーザーはWeb
リクエストを処理し、セキュリティ検証を実行します。Filter
認証、認可、ログ記録など、リクエストの前後にいくつかのアクションを実行します。受信リクエストをインターセプトしHTTP
、定義されたセキュリティ ルールに従って処理します。
Filter
CsrfFilter
、UsernamePasswordAuthenticationFilter
などがありますLogoutFilter
。
参考
- 「スプリングブーツ実践スクール」