クラス JdbcUserDetailsManager
- java.lang.Object
-
- org.springframework.dao.support.DaoSupport
-
- org.springframework.jdbc.core.support.JdbcDaoSupport
-
- org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl
-
- org.springframework.security.provisioning.JdbcUserDetailsManager
- 実装されたすべてのインターフェース:
org.springframework.beans.factory.Aware
、org.springframework.beans.factory.InitializingBean
、org.springframework.context.MessageSourceAware
、UserDetailsService
、GroupManager
、UserDetailsManager
public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsManager, GroupManager
親クラス JdbcDaoImpl と同じテーブル構造に基づく Jdbc ユーザー管理サービス。ユーザーとグループの両方に CRUD 操作を提供します。
enableAuthorities
プロパティが false に設定されている場合、createUser、updateUser、deleteUser の呼び出しでは、UserDetails からの権限は保存されず、ユーザーの権限も削除されません。このクラスは、個人用にロードされた権限と、個人がメンバーであるグループ用にロードされた権限を区別できないため、この実装を使用してユーザーを管理する場合は、この点を考慮することが重要です。- 導入:
- 2.0
フィールドサマリー
フィールド 修飾子と型 フィールド 説明 static java.lang.String
DEF_CHANGE_PASSWORD_SQL
static java.lang.String
DEF_CREATE_USER_SQL
static java.lang.String
DEF_DELETE_GROUP_AUTHORITIES_SQL
static java.lang.String
DEF_DELETE_GROUP_AUTHORITY_SQL
static java.lang.String
DEF_DELETE_GROUP_MEMBER_SQL
static java.lang.String
DEF_DELETE_GROUP_MEMBERS_SQL
static java.lang.String
DEF_DELETE_GROUP_SQL
static java.lang.String
DEF_DELETE_USER_AUTHORITIES_SQL
static java.lang.String
DEF_DELETE_USER_SQL
static java.lang.String
DEF_FIND_GROUP_ID_SQL
static java.lang.String
DEF_FIND_GROUPS_SQL
static java.lang.String
DEF_FIND_USERS_IN_GROUP_SQL
static java.lang.String
DEF_GROUP_AUTHORITIES_QUERY_SQL
static java.lang.String
DEF_INSERT_AUTHORITY_SQL
static java.lang.String
DEF_INSERT_GROUP_AUTHORITY_SQL
static java.lang.String
DEF_INSERT_GROUP_MEMBER_SQL
static java.lang.String
DEF_INSERT_GROUP_SQL
static java.lang.String
DEF_RENAME_GROUP_SQL
static java.lang.String
DEF_UPDATE_USER_SQL
static java.lang.String
DEF_USER_EXISTS_SQL
protected org.apache.commons.logging.Log
logger
クラス org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl から継承されたフィールド
DEF_AUTHORITIES_BY_USERNAME_QUERY, DEF_GROUP_AUTHORITIES_BY_USERNAME_QUERY, DEF_USERS_BY_USERNAME_QUERY, DEFAULT_USER_SCHEMA_DDL_LOCATION, messages
コンストラクターのサマリー
コンストラクター コンストラクター 説明 JdbcUserDetailsManager()
JdbcUserDetailsManager(javax.sql.DataSource dataSource)
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 void
addGroupAuthority(java.lang.String groupName, GrantedAuthority authority)
グループに新しい権限を割り当てます。void
addUserToGroup(java.lang.String username, java.lang.String groupName)
ユーザーを特定のグループのメンバーにします。void
changePassword(java.lang.String oldPassword, java.lang.String newPassword)
現在のユーザーのパスワードを変更します。void
createGroup(java.lang.String groupName, java.util.List<GrantedAuthority> authorities)
指定された権限のリストを使用して新しいグループを作成します。protected Authentication
createNewAuthentication(Authentication currentAuth, java.lang.String newPassword)
void
createUser(UserDetails user)
指定された詳細で新しいユーザーを作成します。void
deleteGroup(java.lang.String groupName)
すべてのメンバーと権限を含むグループを削除します。void
deleteUser(java.lang.String username)
指定されたログイン名を持つユーザーをシステムから削除します。java.util.List<java.lang.String>
findAllGroups()
このグループマネージャーが制御するすべてのグループの名前を返します。java.util.List<GrantedAuthority>
findGroupAuthorities(java.lang.String groupName)
グループに割り当てられているオーソリティのリストを取得します。java.util.List<java.lang.String>
findUsersInGroup(java.lang.String groupName)
グループのメンバーであるユーザーを見つけますprotected void
initDao()
protected java.util.List<UserDetails>
loadUsersByUsername(java.lang.String username)
SQL usersByUsernameQuery を実行し、UserDetails オブジェクトのリストを返します。void
removeGroupAuthority(java.lang.String groupName, GrantedAuthority authority)
グループに割り当てられた権限から権限を削除しますvoid
removeUserFromGroup(java.lang.String username, java.lang.String groupName)
グループのユーザーのメンバーシップを削除します。void
renameGroup(java.lang.String oldName, java.lang.String newName)
割り当てられた権限またはメンバーを変更せずにグループの名前を変更します。void
setAuthenticationManager(AuthenticationManager authenticationManager)
void
setChangePasswordSql(java.lang.String changePasswordSql)
void
setCreateAuthoritySql(java.lang.String createAuthoritySql)
void
setCreateUserSql(java.lang.String createUserSql)
void
setDeleteGroupAuthoritiesSql(java.lang.String deleteGroupAuthoritiesSql)
void
setDeleteGroupAuthoritySql(java.lang.String deleteGroupAuthoritySql)
void
setDeleteGroupMemberSql(java.lang.String deleteGroupMemberSql)
void
setDeleteGroupMembersSql(java.lang.String deleteGroupMembersSql)
void
setDeleteGroupSql(java.lang.String deleteGroupSql)
void
setDeleteUserAuthoritiesSql(java.lang.String deleteUserAuthoritiesSql)
void
setDeleteUserSql(java.lang.String deleteUserSql)
void
setFindAllGroupsSql(java.lang.String findAllGroupsSql)
void
setFindGroupIdSql(java.lang.String findGroupIdSql)
void
setFindUsersInGroupSql(java.lang.String findUsersInGroupSql)
void
setGroupAuthoritiesSql(java.lang.String groupAuthoritiesSql)
void
setInsertGroupAuthoritySql(java.lang.String insertGroupAuthoritySql)
void
setInsertGroupMemberSql(java.lang.String insertGroupMemberSql)
void
setInsertGroupSql(java.lang.String insertGroupSql)
void
setRenameGroupSql(java.lang.String renameGroupSql)
void
setSecurityContextHolderStrategy(SecurityContextHolderStrategy securityContextHolderStrategy)
使用するSecurityContextHolderStrategy
を設定します。void
setUpdateUserSql(java.lang.String updateUserSql)
void
setUserCache(UserCache userCache)
オプションで、UserCache がアプリケーションで使用されている場合は設定します。void
setUserExistsSql(java.lang.String userExistsSql)
void
updateUser(UserDetails user)
指定されたユーザーを更新します。boolean
userExists(java.lang.String username)
指定されたログイン名を持つユーザーがシステムに存在するかどうかを確認します。クラス org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl から継承されたメソッド
addCustomAuthorities, createUserDetails, getAuthoritiesByUsernameQuery, getEnableAuthorities, getEnableGroups, getMessages, getRolePrefix, getUsersByUsernameQuery, isUsernameBasedPrimaryKey, loadGroupAuthorities, loadUserAuthorities, loadUserByUsername, setAuthoritiesByUsernameQuery, setEnableAuthorities, setEnableGroups, setGroupAuthoritiesByUsernameQuery, setMessageSource, setRolePrefix, setUsernameBasedPrimaryKey, setUsersByUsernameQuery
クラス org.springframework.jdbc.core.support.JdbcDaoSupport から継承されたメソッド
checkDaoConfig, createJdbcTemplate, getConnection, getDataSource, getExceptionTranslator, getJdbcTemplate, initTemplateConfig, releaseConnection, setDataSource, setJdbcTemplate
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
インターフェース org.springframework.security.core.userdetails.UserDetailsService から継承されたメソッド
loadUserByUsername
フィールドの詳細
DEF_CREATE_USER_SQL
public static final java.lang.String DEF_CREATE_USER_SQL
- 関連事項:
- 定数フィールド値
DEF_DELETE_USER_SQL
public static final java.lang.String DEF_DELETE_USER_SQL
- 関連事項:
- 定数フィールド値
DEF_UPDATE_USER_SQL
public static final java.lang.String DEF_UPDATE_USER_SQL
- 関連事項:
- 定数フィールド値
DEF_INSERT_AUTHORITY_SQL
public static final java.lang.String DEF_INSERT_AUTHORITY_SQL
- 関連事項:
- 定数フィールド値
DEF_DELETE_USER_AUTHORITIES_SQL
public static final java.lang.String DEF_DELETE_USER_AUTHORITIES_SQL
- 関連事項:
- 定数フィールド値
DEF_USER_EXISTS_SQL
public static final java.lang.String DEF_USER_EXISTS_SQL
- 関連事項:
- 定数フィールド値
DEF_CHANGE_PASSWORD_SQL
public static final java.lang.String DEF_CHANGE_PASSWORD_SQL
- 関連事項:
- 定数フィールド値
DEF_FIND_GROUPS_SQL
public static final java.lang.String DEF_FIND_GROUPS_SQL
- 関連事項:
- 定数フィールド値
DEF_FIND_USERS_IN_GROUP_SQL
public static final java.lang.String DEF_FIND_USERS_IN_GROUP_SQL
- 関連事項:
- 定数フィールド値
DEF_INSERT_GROUP_SQL
public static final java.lang.String DEF_INSERT_GROUP_SQL
- 関連事項:
- 定数フィールド値
DEF_FIND_GROUP_ID_SQL
public static final java.lang.String DEF_FIND_GROUP_ID_SQL
- 関連事項:
- 定数フィールド値
DEF_INSERT_GROUP_AUTHORITY_SQL
public static final java.lang.String DEF_INSERT_GROUP_AUTHORITY_SQL
- 関連事項:
- 定数フィールド値
DEF_DELETE_GROUP_SQL
public static final java.lang.String DEF_DELETE_GROUP_SQL
- 関連事項:
- 定数フィールド値
DEF_DELETE_GROUP_AUTHORITIES_SQL
public static final java.lang.String DEF_DELETE_GROUP_AUTHORITIES_SQL
- 関連事項:
- 定数フィールド値
DEF_DELETE_GROUP_MEMBERS_SQL
public static final java.lang.String DEF_DELETE_GROUP_MEMBERS_SQL
- 関連事項:
- 定数フィールド値
DEF_RENAME_GROUP_SQL
public static final java.lang.String DEF_RENAME_GROUP_SQL
- 関連事項:
- 定数フィールド値
DEF_INSERT_GROUP_MEMBER_SQL
public static final java.lang.String DEF_INSERT_GROUP_MEMBER_SQL
- 関連事項:
- 定数フィールド値
DEF_DELETE_GROUP_MEMBER_SQL
public static final java.lang.String DEF_DELETE_GROUP_MEMBER_SQL
- 関連事項:
- 定数フィールド値
DEF_GROUP_AUTHORITIES_QUERY_SQL
public static final java.lang.String DEF_GROUP_AUTHORITIES_QUERY_SQL
- 関連事項:
- 定数フィールド値
DEF_DELETE_GROUP_AUTHORITY_SQL
public static final java.lang.String DEF_DELETE_GROUP_AUTHORITY_SQL
- 関連事項:
- 定数フィールド値
logger
protected final org.apache.commons.logging.Log logger
メソッドの詳細
initDao
protected void initDao() throws org.springframework.context.ApplicationContextException
- オーバーライド:
- クラス
JdbcDaoImpl
のinitDao
- 例外:
org.springframework.context.ApplicationContextException
loadUsersByUsername
protected java.util.List<UserDetails> loadUsersByUsername(java.lang.String username)
SQL usersByUsernameQuery を実行し、UserDetails オブジェクトのリストを返します。通常、一致するユーザーは 1 人だけです。- オーバーライド:
- クラス
JdbcDaoImpl
のloadUsersByUsername
createUser
public void createUser(UserDetails user)
インターフェースからコピーされた説明:UserDetailsManager
指定された詳細で新しいユーザーを作成します。- 次で指定:
- インターフェース
UserDetailsManager
のcreateUser
updateUser
public void updateUser(UserDetails user)
インターフェースからコピーされた説明:UserDetailsManager
指定されたユーザーを更新します。- 次で指定:
- インターフェース
UserDetailsManager
のupdateUser
deleteUser
public void deleteUser(java.lang.String username)
インターフェースからコピーされた説明:UserDetailsManager
指定されたログイン名を持つユーザーをシステムから削除します。- 次で指定:
- インターフェース
UserDetailsManager
のdeleteUser
changePassword
public void changePassword(java.lang.String oldPassword, java.lang.String newPassword) throws AuthenticationException
インターフェースからコピーされた説明:UserDetailsManager
現在のユーザーのパスワードを変更します。これにより、永続ユーザーリポジトリ(datbase、LDAP など)のユーザーのパスワードが変更されます。- 次で指定:
- インターフェース
UserDetailsManager
のchangePassword
- パラメーター:
oldPassword
- 現在のパスワード (必要に応じて再認証する)newPassword
- 変更するパスワード- 例外:
AuthenticationException
createNewAuthentication
protected Authentication createNewAuthentication(Authentication currentAuth, java.lang.String newPassword)
userExists
public boolean userExists(java.lang.String username)
インターフェースからコピーされた説明:UserDetailsManager
指定されたログイン名を持つユーザーがシステムに存在するかどうかを確認します。- 次で指定:
- インターフェース
UserDetailsManager
のuserExists
findAllGroups
public java.util.List<java.lang.String> findAllGroups()
インターフェースからコピーされた説明:GroupManager
このグループマネージャーが制御するすべてのグループの名前を返します。- 次で指定:
- インターフェース
GroupManager
のfindAllGroups
findUsersInGroup
public java.util.List<java.lang.String> findUsersInGroup(java.lang.String groupName)
インターフェースからコピーされた説明:GroupManager
グループのメンバーであるユーザーを見つけます- 次で指定:
- インターフェース
GroupManager
のfindUsersInGroup
- パラメーター:
groupName
- メンバーが必要なグループ- 戻り値:
- グループメンバーのユーザー名
createGroup
public void createGroup(java.lang.String groupName, java.util.List<GrantedAuthority> authorities)
インターフェースからコピーされた説明:GroupManager
指定された権限のリストを使用して新しいグループを作成します。- 次で指定:
- インターフェース
GroupManager
のcreateGroup
- パラメーター:
groupName
- 新しいグループの名前authorities
- このグループに割り当てられる権限。
deleteGroup
public void deleteGroup(java.lang.String groupName)
インターフェースからコピーされた説明:GroupManager
すべてのメンバーと権限を含むグループを削除します。- 次で指定:
- インターフェース
GroupManager
のdeleteGroup
- パラメーター:
groupName
- 削除するグループ。
renameGroup
public void renameGroup(java.lang.String oldName, java.lang.String newName)
インターフェースからコピーされた説明:GroupManager
割り当てられた権限またはメンバーを変更せずにグループの名前を変更します。- 次で指定:
- インターフェース
GroupManager
のrenameGroup
addUserToGroup
public void addUserToGroup(java.lang.String username, java.lang.String groupName)
インターフェースからコピーされた説明:GroupManager
ユーザーを特定のグループのメンバーにします。- 次で指定:
- インターフェース
GroupManager
のaddUserToGroup
- パラメーター:
username
- メンバーシップを付与されるユーザー。groupName
- ユーザーが追加されるグループの名前。
removeUserFromGroup
public void removeUserFromGroup(java.lang.String username, java.lang.String groupName)
インターフェースからコピーされた説明:GroupManager
グループのユーザーのメンバーシップを削除します。- 次で指定:
- インターフェース
GroupManager
のremoveUserFromGroup
- パラメーター:
username
- ユーザーgroupName
- それらを削除するグループ
findGroupAuthorities
public java.util.List<GrantedAuthority> findGroupAuthorities(java.lang.String groupName)
インターフェースからコピーされた説明:GroupManager
グループに割り当てられているオーソリティのリストを取得します。- 次で指定:
- インターフェース
GroupManager
のfindGroupAuthorities
removeGroupAuthority
public void removeGroupAuthority(java.lang.String groupName, GrantedAuthority authority)
インターフェースからコピーされた説明:GroupManager
グループに割り当てられた権限から権限を削除します- 次で指定:
- インターフェース
GroupManager
のremoveGroupAuthority
addGroupAuthority
public void addGroupAuthority(java.lang.String groupName, GrantedAuthority authority)
インターフェースからコピーされた説明:GroupManager
グループに新しい権限を割り当てます。- 次で指定:
- インターフェース
GroupManager
のaddGroupAuthority
setSecurityContextHolderStrategy
public void setSecurityContextHolderStrategy(SecurityContextHolderStrategy securityContextHolderStrategy)
使用するSecurityContextHolderStrategy
を設定します。デフォルトのアクションは、SecurityContextHolder
に格納されているSecurityContextHolderStrategy
を使用することです。- 導入:
- 5.8
setAuthenticationManager
public void setAuthenticationManager(AuthenticationManager authenticationManager)
setCreateUserSql
public void setCreateUserSql(java.lang.String createUserSql)
setDeleteUserSql
public void setDeleteUserSql(java.lang.String deleteUserSql)
setUpdateUserSql
public void setUpdateUserSql(java.lang.String updateUserSql)
setCreateAuthoritySql
public void setCreateAuthoritySql(java.lang.String createAuthoritySql)
setDeleteUserAuthoritiesSql
public void setDeleteUserAuthoritiesSql(java.lang.String deleteUserAuthoritiesSql)
setUserExistsSql
public void setUserExistsSql(java.lang.String userExistsSql)
setChangePasswordSql
public void setChangePasswordSql(java.lang.String changePasswordSql)
setFindAllGroupsSql
public void setFindAllGroupsSql(java.lang.String findAllGroupsSql)
setFindUsersInGroupSql
public void setFindUsersInGroupSql(java.lang.String findUsersInGroupSql)
setInsertGroupSql
public void setInsertGroupSql(java.lang.String insertGroupSql)
setFindGroupIdSql
public void setFindGroupIdSql(java.lang.String findGroupIdSql)
setInsertGroupAuthoritySql
public void setInsertGroupAuthoritySql(java.lang.String insertGroupAuthoritySql)
setDeleteGroupSql
public void setDeleteGroupSql(java.lang.String deleteGroupSql)
setDeleteGroupAuthoritiesSql
public void setDeleteGroupAuthoritiesSql(java.lang.String deleteGroupAuthoritiesSql)
setDeleteGroupMembersSql
public void setDeleteGroupMembersSql(java.lang.String deleteGroupMembersSql)
setRenameGroupSql
public void setRenameGroupSql(java.lang.String renameGroupSql)
setInsertGroupMemberSql
public void setInsertGroupMemberSql(java.lang.String insertGroupMemberSql)
setDeleteGroupMemberSql
public void setDeleteGroupMemberSql(java.lang.String deleteGroupMemberSql)
setGroupAuthoritiesSql
public void setGroupAuthoritiesSql(java.lang.String groupAuthoritiesSql)
setDeleteGroupAuthoritySql
public void setDeleteGroupAuthoritySql(java.lang.String deleteGroupAuthoritySql)
setUserCache
public void setUserCache(UserCache userCache)
オプションで、UserCache がアプリケーションで使用されている場合は設定します。これにより、更新が行われた後にユーザーをキャッシュから削除して、古いデータを回避できます。- パラメーター:
userCache
- AuthenticationManager が使用するキャッシュ。