spring security学習ノート(二)


コアコンポーネント
SecurityConttext Holder
spring securityフレームの中心はSecurityConttext Holderです.セキュリティに関する情報の内容は、ユーザの情報を含むSecurityContact Holderに格納されます.デフォルトではSecurityContact Holderは一つのThreadLocalで情報を格納します.このようにする利点は、同じスレッド内で実行される方法は常にSecurityContectを呼び出すことができ、SecurityContectをパラメータとして呼び出す方法に渡す必要がないということです.
現在のユーザの情報を取得します.
私たちはSecurityContect Holderに現在のユーザとアプリケーションに関する情報を格納しています.Spring SecurityはAuthenticationオブジェクトでこれらの情報を表します.Authenticationオブジェクトは自分で作成する必要はありません.Spring Securityは自動的にAuthenticationオブジェクトに情報を封入します.下記のコードにより、現在のユーザの認証情報はアプリケーションのどこからでも取得できます.
 
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();

if (principal instanceof UserDetails) {
  String username = ((UserDetails)principal).getUsername();
} else {
  String username = principal.toString();
}
 get Conttext()方法はSecurityConteetの対象に戻ります.SecurityConttext HolderはSecurityConteetをThreadLocalに保存します.Spring Securityのほとんどの認証方法はUserDetailsオブジェクトをユーザ情報として返します.
UserDetail
UserDetailsはspring securityの枠組みの中の重要なインターフェースであり、UserDetailは現在のユーザーを表しています.アプリケーション自体のユーザ情報とSpring Securityが必要とするユーザ情報の間には、UserDetailが必要となります.私たちは常にSecurityContectから取得したユーザ情報を、getEmail()getAddress()などのアプリケーションユーザ特有の方法を呼び出すために、プログラムに必要なユーザ情報に変換する必要があります.
GranntedAuthority
文面からは授権に関する部類であることが分かります.Authentication.get Authorties()は、Authorityオブジェクトのセットを返すための授権の重要な方法である.GranntedAuthoritは、同時にアカウントを与えられ、その権限を持つようにする権限を表しています.授権は通常キャラクターに基づいています.
 
締め括りをつける
SecurityConttext Holder:SecurityConttextにアクセスする方法を提供します.
SecurityCotext:Authenticationと要求に関するセキュリティ情報を保存します.
Authentication:ユーザとプログラム関連情報を表します.
GranntedAuthorty:アプリケーション範囲を表す権限は、通常ユーザーに与えられます.
UserDetails:ユーザーの基本情報を表し、Authenitcationオブジェクトを一般的にUserDetailsで構築する.
UserDetails Service:UserDetailを構築するために使用します.