keycloak-federation
公開メンバ関数 | 限定公開メンバ関数 | 非公開変数類 | 全メンバ一覧
org.keycloak.storage.ldap.mappers.msadlds.MSADLDSUserAccountControlStorageMapper.MSADUserModelDelegate クラス
org.keycloak.storage.ldap.mappers.msadlds.MSADLDSUserAccountControlStorageMapper.MSADUserModelDelegate の継承関係図
Inheritance graph
org.keycloak.storage.ldap.mappers.msadlds.MSADLDSUserAccountControlStorageMapper.MSADUserModelDelegate 連携図
Collaboration graph

公開メンバ関数

 MSADUserModelDelegate (UserModel delegate, LDAPObject ldapUser)
 
boolean isEnabled ()
 
void setEnabled (boolean enabled)
 
void addRequiredAction (RequiredAction action)
 
void addRequiredAction (String action)
 
void removeRequiredAction (RequiredAction action)
 
void removeRequiredAction (String action)
 
Set< String > getRequiredActions ()
 

限定公開メンバ関数

long getPwdLastSet ()
 

非公開変数類

final LDAPObject ldapUser
 

詳解

構築子と解体子

◆ MSADUserModelDelegate()

org.keycloak.storage.ldap.mappers.msadlds.MSADLDSUserAccountControlStorageMapper.MSADUserModelDelegate.MSADUserModelDelegate ( UserModel  delegate,
LDAPObject  ldapUser 
)
inline
175  {
176  super(delegate);
177  this.ldapUser = ldapUser;
178  }
final LDAPObject ldapUser
Definition: MSADLDSUserAccountControlStorageMapper.java:173

関数詳解

◆ addRequiredAction() [1/2]

void org.keycloak.storage.ldap.mappers.msadlds.MSADLDSUserAccountControlStorageMapper.MSADUserModelDelegate.addRequiredAction ( RequiredAction  action)
inline
213  {
214  String actionName = action.name();
215  addRequiredAction(actionName);
216  }
void addRequiredAction(RequiredAction action)
Definition: MSADLDSUserAccountControlStorageMapper.java:213

◆ addRequiredAction() [2/2]

void org.keycloak.storage.ldap.mappers.msadlds.MSADLDSUserAccountControlStorageMapper.MSADUserModelDelegate.addRequiredAction ( String  action)
inline
219  {
220  // Always update DB
221  super.addRequiredAction(action);
222 
223  if (ldapProvider.getEditMode() == UserStorageProvider.EditMode.WRITABLE && RequiredAction.UPDATE_PASSWORD.toString().equals(action)) {
224  logger.debugf("Going to propagate required action UPDATE_PASSWORD to MSAD for ldap user '%s' ", ldapUser.getDn().toString());
225 
226  // Normally it's read-only
227  ldapUser.removeReadOnlyAttributeName(LDAPConstants.PWD_LAST_SET);
228 
229  ldapUser.setSingleAttribute(LDAPConstants.PWD_LAST_SET, "0");
231  }
232  }
void setSingleAttribute(String attributeName, String attributeValue)
Definition: LDAPObject.java:97
String toString()
Definition: LDAPDn.java:78
EditMode getEditMode()
Definition: LDAPStorageProvider.java:130
LDAPDn getDn()
Definition: LDAPObject.java:60
void update(LDAPObject ldapObject)
Definition: LDAPIdentityStore.java:105
static final Logger logger
Definition: MSADLDSUserAccountControlStorageMapper.java:52
void removeReadOnlyAttributeName(String readOnlyAttribute)
Definition: LDAPObject.java:85
final LDAPObject ldapUser
Definition: MSADLDSUserAccountControlStorageMapper.java:173
LDAPIdentityStore getLdapIdentityStore()
Definition: LDAPStorageProvider.java:126
final LDAPStorageProvider ldapProvider
Definition: AbstractLDAPStorageMapper.java:44

◆ getPwdLastSet()

long org.keycloak.storage.ldap.mappers.msadlds.MSADLDSUserAccountControlStorageMapper.MSADUserModelDelegate.getPwdLastSet ( )
inlineprotected
275  {
276  String pwdLastSet = ldapUser.getAttributeAsString(LDAPConstants.PWD_LAST_SET);
277  return pwdLastSet == null ? 0 : Long.parseLong(pwdLastSet);
278  }
String getAttributeAsString(String name)
Definition: LDAPObject.java:109
final LDAPObject ldapUser
Definition: MSADLDSUserAccountControlStorageMapper.java:173

◆ getRequiredActions()

Set<String> org.keycloak.storage.ldap.mappers.msadlds.MSADLDSUserAccountControlStorageMapper.MSADUserModelDelegate.getRequiredActions ( )
inline
261  {
262  Set<String> requiredActions = super.getRequiredActions();
263 
264  if (ldapProvider.getEditMode() == UserStorageProvider.EditMode.WRITABLE) {
265  if (getPwdLastSet() == 0 || Boolean.parseBoolean(ldapUser.getAttributeAsString(LDAPConstants.MSDS_USER_PASSWORD_EXPIRED))) {
266  requiredActions = new HashSet<>(requiredActions);
267  requiredActions.add(RequiredAction.UPDATE_PASSWORD.toString());
268  return requiredActions;
269  }
270  }
271 
272  return requiredActions;
273  }
String getAttributeAsString(String name)
Definition: LDAPObject.java:109
EditMode getEditMode()
Definition: LDAPStorageProvider.java:130
long getPwdLastSet()
Definition: MSADLDSUserAccountControlStorageMapper.java:275
final LDAPObject ldapUser
Definition: MSADLDSUserAccountControlStorageMapper.java:173
final LDAPStorageProvider ldapProvider
Definition: AbstractLDAPStorageMapper.java:44

◆ isEnabled()

boolean org.keycloak.storage.ldap.mappers.msadlds.MSADLDSUserAccountControlStorageMapper.MSADUserModelDelegate.isEnabled ( )
inline
181  {
182  boolean kcEnabled = super.isEnabled();
183 
184  if (getPwdLastSet() > 0) {
185  // Merge KC and MSAD LDS
186  return kcEnabled && !Boolean.parseBoolean(ldapUser.getAttributeAsString(LDAPConstants.MSDS_USER_ACCOUNT_DISABLED));
187  } else {
188  // If new MSAD LDS user is created and pwdLastSet is still 0, MSAD account is in disabled state. So read just from Keycloak DB. User is not able to login via MSAD anyway
189  return kcEnabled;
190  }
191  }
String getAttributeAsString(String name)
Definition: LDAPObject.java:109
long getPwdLastSet()
Definition: MSADLDSUserAccountControlStorageMapper.java:275
final LDAPObject ldapUser
Definition: MSADLDSUserAccountControlStorageMapper.java:173

◆ removeRequiredAction() [1/2]

void org.keycloak.storage.ldap.mappers.msadlds.MSADLDSUserAccountControlStorageMapper.MSADUserModelDelegate.removeRequiredAction ( RequiredAction  action)
inline
235  {
236  String actionName = action.name();
237  removeRequiredAction(actionName);
238  }
void removeRequiredAction(RequiredAction action)
Definition: MSADLDSUserAccountControlStorageMapper.java:235

◆ removeRequiredAction() [2/2]

void org.keycloak.storage.ldap.mappers.msadlds.MSADLDSUserAccountControlStorageMapper.MSADUserModelDelegate.removeRequiredAction ( String  action)
inline
241  {
242  // Always update DB
243  super.removeRequiredAction(action);
244 
245  if (ldapProvider.getEditMode() == UserStorageProvider.EditMode.WRITABLE && RequiredAction.UPDATE_PASSWORD.toString().equals(action)) {
246 
247  // Don't set pwdLastSet in MSAD LDS when it is new user
248  if (!Boolean.parseBoolean(ldapUser.getAttributeAsString(LDAPConstants.MSDS_USER_PASSWORD_NOTREQD))) {
249  logger.debugf("Going to remove required action UPDATE_PASSWORD from MSAD LDS for ldap user '%s' ", ldapUser.getDn().toString());
250 
251  // Normally it's read-only
252  ldapUser.removeReadOnlyAttributeName(LDAPConstants.PWD_LAST_SET);
253 
254  ldapUser.setSingleAttribute(LDAPConstants.PWD_LAST_SET, "-1");
256  }
257  }
258  }
void setSingleAttribute(String attributeName, String attributeValue)
Definition: LDAPObject.java:97
String getAttributeAsString(String name)
Definition: LDAPObject.java:109
String toString()
Definition: LDAPDn.java:78
EditMode getEditMode()
Definition: LDAPStorageProvider.java:130
LDAPDn getDn()
Definition: LDAPObject.java:60
void update(LDAPObject ldapObject)
Definition: LDAPIdentityStore.java:105
static final Logger logger
Definition: MSADLDSUserAccountControlStorageMapper.java:52
void removeReadOnlyAttributeName(String readOnlyAttribute)
Definition: LDAPObject.java:85
final LDAPObject ldapUser
Definition: MSADLDSUserAccountControlStorageMapper.java:173
LDAPIdentityStore getLdapIdentityStore()
Definition: LDAPStorageProvider.java:126
final LDAPStorageProvider ldapProvider
Definition: AbstractLDAPStorageMapper.java:44

◆ setEnabled()

void org.keycloak.storage.ldap.mappers.msadlds.MSADLDSUserAccountControlStorageMapper.MSADUserModelDelegate.setEnabled ( boolean  enabled)
inline
194  {
195  // Always update DB
196  super.setEnabled(enabled);
197 
198  if (ldapProvider.getEditMode() == UserStorageProvider.EditMode.WRITABLE && getPwdLastSet() > 0) {
199  if (enabled) {
200  logger.debugf("Removing msDS-UserAccountDisabled of user '%s'", ldapUser.getDn().toString());
201  // TODO: Use removeAttribute once available
202  ldapUser.setSingleAttribute(LDAPConstants.MSDS_USER_ACCOUNT_DISABLED, "FALSE");
203  } else {
204  logger.debugf("Setting msDS-UserAccountDisabled of user '%s' to value 'TRUE'", ldapUser.getDn().toString());
205  ldapUser.setSingleAttribute(LDAPConstants.MSDS_USER_ACCOUNT_DISABLED, "TRUE");
206  }
207 
209  }
210  }
void setSingleAttribute(String attributeName, String attributeValue)
Definition: LDAPObject.java:97
String toString()
Definition: LDAPDn.java:78
EditMode getEditMode()
Definition: LDAPStorageProvider.java:130
LDAPDn getDn()
Definition: LDAPObject.java:60
void update(LDAPObject ldapObject)
Definition: LDAPIdentityStore.java:105
static final Logger logger
Definition: MSADLDSUserAccountControlStorageMapper.java:52
long getPwdLastSet()
Definition: MSADLDSUserAccountControlStorageMapper.java:275
final LDAPObject ldapUser
Definition: MSADLDSUserAccountControlStorageMapper.java:173
LDAPIdentityStore getLdapIdentityStore()
Definition: LDAPStorageProvider.java:126
final LDAPStorageProvider ldapProvider
Definition: AbstractLDAPStorageMapper.java:44

メンバ詳解

◆ ldapUser

final LDAPObject org.keycloak.storage.ldap.mappers.msadlds.MSADLDSUserAccountControlStorageMapper.MSADUserModelDelegate.ldapUser
private

このクラス詳解は次のファイルから抽出されました: