keycloak-federation
公開メンバ関数 | 静的公開変数類 | 限定公開メンバ関数 | 限定公開変数類 | 非公開変数類 | 全メンバ一覧
org.keycloak.storage.ldap.mappers.msad.MSADUserAccountControlStorageMapper.MSADUserModelDelegate クラス
org.keycloak.storage.ldap.mappers.msad.MSADUserAccountControlStorageMapper.MSADUserModelDelegate の継承関係図
Inheritance graph
org.keycloak.storage.ldap.mappers.msad.MSADUserAccountControlStorageMapper.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 ()
 

静的公開変数類

static final Logger logger = Logger.getLogger(TxAwareLDAPUserModelDelegate.class)
 

限定公開メンバ関数

long getPwdLastSet ()
 
void ensureTransactionStarted ()
 

限定公開変数類

LDAPStorageProvider provider
 

非公開変数類

final LDAPObject ldapUser
 

詳解

構築子と解体子

◆ MSADUserModelDelegate()

org.keycloak.storage.ldap.mappers.msad.MSADUserAccountControlStorageMapper.MSADUserModelDelegate.MSADUserModelDelegate ( UserModel  delegate,
LDAPObject  ldapUser 
)
inline
213  {
214  super(delegate, ldapProvider, ldapUser);
215  this.ldapUser = ldapUser;
216  }
final LDAPObject ldapUser
Definition: MSADUserAccountControlStorageMapper.java:211
final LDAPStorageProvider ldapProvider
Definition: AbstractLDAPStorageMapper.java:44

関数詳解

◆ addRequiredAction() [1/2]

void org.keycloak.storage.ldap.mappers.msad.MSADUserAccountControlStorageMapper.MSADUserModelDelegate.addRequiredAction ( RequiredAction  action)
inline
253  {
254  String actionName = action.name();
255  addRequiredAction(actionName);
256  }
void addRequiredAction(RequiredAction action)
Definition: MSADUserAccountControlStorageMapper.java:253

◆ addRequiredAction() [2/2]

void org.keycloak.storage.ldap.mappers.msad.MSADUserAccountControlStorageMapper.MSADUserModelDelegate.addRequiredAction ( String  action)
inline
259  {
260  // Always update DB
261  super.addRequiredAction(action);
262 
263  if (ldapProvider.getEditMode() == UserStorageProvider.EditMode.WRITABLE && RequiredAction.UPDATE_PASSWORD.toString().equals(action)) {
264  logger.debugf("Going to propagate required action UPDATE_PASSWORD to MSAD for ldap user '%s' ", ldapUser.getDn().toString());
265 
266  // Normally it's read-only
267  ldapUser.removeReadOnlyAttributeName(LDAPConstants.PWD_LAST_SET);
268 
269  ldapUser.setSingleAttribute(LDAPConstants.PWD_LAST_SET, "0");
270 
272  }
273  }
void setSingleAttribute(String attributeName, String attributeValue)
Definition: LDAPObject.java:97
final LDAPObject ldapUser
Definition: MSADUserAccountControlStorageMapper.java:211
static final Logger logger
Definition: TxAwareLDAPUserModelDelegate.java:31
String toString()
Definition: LDAPDn.java:78
EditMode getEditMode()
Definition: LDAPStorageProvider.java:130
LDAPDn getDn()
Definition: LDAPObject.java:60
void ensureTransactionStarted()
Definition: TxAwareLDAPUserModelDelegate.java:42
void removeReadOnlyAttributeName(String readOnlyAttribute)
Definition: LDAPObject.java:85
final LDAPStorageProvider ldapProvider
Definition: AbstractLDAPStorageMapper.java:44

◆ ensureTransactionStarted()

void org.keycloak.storage.ldap.mappers.TxAwareLDAPUserModelDelegate.ensureTransactionStarted ( )
inlineprotectedinherited
42  {
43  LDAPTransaction transaction = provider.getUserManager().getTransaction(getId());
44  if (transaction.getState() == LDAPTransaction.TransactionState.NOT_STARTED) {
45  if (logger.isTraceEnabled()) {
46  logger.trace("Starting and enlisting transaction for object " + ldapUser.getDn().toString());
47  }
48 
49  this.provider.getSession().getTransactionManager().enlistAfterCompletion(transaction);
50  }
51  }
static final Logger logger
Definition: TxAwareLDAPUserModelDelegate.java:31
String toString()
Definition: LDAPDn.java:78
KeycloakSession getSession()
Definition: LDAPStorageProvider.java:122
LDAPStorageUserManager getUserManager()
Definition: LDAPStorageProvider.java:142
LDAPDn getDn()
Definition: LDAPObject.java:60
LDAPObject ldapUser
Definition: TxAwareLDAPUserModelDelegate.java:34
LDAPTransaction getTransaction(String userId)
Definition: LDAPStorageUserManager.java:51
LDAPStorageProvider provider
Definition: TxAwareLDAPUserModelDelegate.java:33

◆ getPwdLastSet()

long org.keycloak.storage.ldap.mappers.msad.MSADUserAccountControlStorageMapper.MSADUserModelDelegate.getPwdLastSet ( )
inlineprotected
318  {
319  String pwdLastSet = ldapUser.getAttributeAsString(LDAPConstants.PWD_LAST_SET);
320  return pwdLastSet == null ? 0 : Long.parseLong(pwdLastSet);
321  }
String getAttributeAsString(String name)
Definition: LDAPObject.java:109
final LDAPObject ldapUser
Definition: MSADUserAccountControlStorageMapper.java:211

◆ getRequiredActions()

Set<String> org.keycloak.storage.ldap.mappers.msad.MSADUserAccountControlStorageMapper.MSADUserModelDelegate.getRequiredActions ( )
inline
304  {
305  Set<String> requiredActions = super.getRequiredActions();
306 
307  if (ldapProvider.getEditMode() == UserStorageProvider.EditMode.WRITABLE) {
308  if (getPwdLastSet() == 0 || getUserAccountControl(ldapUser).has(UserAccountControl.PASSWORD_EXPIRED)) {
309  requiredActions = new HashSet<>(requiredActions);
310  requiredActions.add(RequiredAction.UPDATE_PASSWORD.toString());
311  return requiredActions;
312  }
313  }
314 
315  return requiredActions;
316  }
final LDAPObject ldapUser
Definition: MSADUserAccountControlStorageMapper.java:211
EditMode getEditMode()
Definition: LDAPStorageProvider.java:130
UserAccountControl getUserAccountControl(LDAPObject ldapUser)
Definition: MSADUserAccountControlStorageMapper.java:189
boolean has(long feature)
Definition: UserAccountControl.java:56
final LDAPStorageProvider ldapProvider
Definition: AbstractLDAPStorageMapper.java:44
long getPwdLastSet()
Definition: MSADUserAccountControlStorageMapper.java:318

◆ isEnabled()

boolean org.keycloak.storage.ldap.mappers.msad.MSADUserAccountControlStorageMapper.MSADUserModelDelegate.isEnabled ( )
inline
219  {
220  boolean kcEnabled = super.isEnabled();
221 
222  if (getPwdLastSet() > 0) {
223  // Merge KC and MSAD
224  return kcEnabled && !getUserAccountControl(ldapUser).has(UserAccountControl.ACCOUNTDISABLE);
225  } else {
226  // If new MSAD 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
227  return kcEnabled;
228  }
229  }
final LDAPObject ldapUser
Definition: MSADUserAccountControlStorageMapper.java:211
UserAccountControl getUserAccountControl(LDAPObject ldapUser)
Definition: MSADUserAccountControlStorageMapper.java:189
boolean has(long feature)
Definition: UserAccountControl.java:56
long getPwdLastSet()
Definition: MSADUserAccountControlStorageMapper.java:318

◆ removeRequiredAction() [1/2]

void org.keycloak.storage.ldap.mappers.msad.MSADUserAccountControlStorageMapper.MSADUserModelDelegate.removeRequiredAction ( RequiredAction  action)
inline
276  {
277  String actionName = action.name();
278  removeRequiredAction(actionName);
279  }
void removeRequiredAction(RequiredAction action)
Definition: MSADUserAccountControlStorageMapper.java:276

◆ removeRequiredAction() [2/2]

void org.keycloak.storage.ldap.mappers.msad.MSADUserAccountControlStorageMapper.MSADUserModelDelegate.removeRequiredAction ( String  action)
inline
282  {
283  // Always update DB
284  super.removeRequiredAction(action);
285 
286  if (ldapProvider.getEditMode() == UserStorageProvider.EditMode.WRITABLE && RequiredAction.UPDATE_PASSWORD.toString().equals(action)) {
287 
288  // Don't set pwdLastSet in MSAD when it is new user
289  UserAccountControl accountControl = getUserAccountControl(ldapUser);
290  if (accountControl.getValue() != 0 && !accountControl.has(UserAccountControl.PASSWD_NOTREQD)) {
291  logger.debugf("Going to remove required action UPDATE_PASSWORD from MSAD for ldap user '%s' ", ldapUser.getDn().toString());
292 
293  // Normally it's read-only
294  ldapUser.removeReadOnlyAttributeName(LDAPConstants.PWD_LAST_SET);
295 
296  ldapUser.setSingleAttribute(LDAPConstants.PWD_LAST_SET, "-1");
297 
299  }
300  }
301  }
void setSingleAttribute(String attributeName, String attributeValue)
Definition: LDAPObject.java:97
final LDAPObject ldapUser
Definition: MSADUserAccountControlStorageMapper.java:211
static final Logger logger
Definition: TxAwareLDAPUserModelDelegate.java:31
String toString()
Definition: LDAPDn.java:78
EditMode getEditMode()
Definition: LDAPStorageProvider.java:130
LDAPDn getDn()
Definition: LDAPObject.java:60
void ensureTransactionStarted()
Definition: TxAwareLDAPUserModelDelegate.java:42
void removeReadOnlyAttributeName(String readOnlyAttribute)
Definition: LDAPObject.java:85
UserAccountControl getUserAccountControl(LDAPObject ldapUser)
Definition: MSADUserAccountControlStorageMapper.java:189
final LDAPStorageProvider ldapProvider
Definition: AbstractLDAPStorageMapper.java:44

◆ setEnabled()

void org.keycloak.storage.ldap.mappers.msad.MSADUserAccountControlStorageMapper.MSADUserModelDelegate.setEnabled ( boolean  enabled)
inline
232  {
233  // Always update DB
234  super.setEnabled(enabled);
235 
236  if (ldapProvider.getEditMode() == UserStorageProvider.EditMode.WRITABLE && getPwdLastSet() > 0) {
237  logger.debugf("Going to propagate enabled=%s for ldapUser '%s' to MSAD", enabled, ldapUser.getDn().toString());
238 
239  UserAccountControl control = getUserAccountControl(ldapUser);
240  if (enabled) {
241  control.remove(UserAccountControl.ACCOUNTDISABLE);
242  } else {
243  control.add(UserAccountControl.ACCOUNTDISABLE);
244  }
245 
247 
248  updateUserAccountControl(false, ldapUser, control);
249  }
250  }
final LDAPObject ldapUser
Definition: MSADUserAccountControlStorageMapper.java:211
void updateUserAccountControl(boolean updateInLDAP, LDAPObject ldapUser, UserAccountControl accountControl)
Definition: MSADUserAccountControlStorageMapper.java:196
static final Logger logger
Definition: TxAwareLDAPUserModelDelegate.java:31
String toString()
Definition: LDAPDn.java:78
EditMode getEditMode()
Definition: LDAPStorageProvider.java:130
LDAPDn getDn()
Definition: LDAPObject.java:60
void ensureTransactionStarted()
Definition: TxAwareLDAPUserModelDelegate.java:42
UserAccountControl getUserAccountControl(LDAPObject ldapUser)
Definition: MSADUserAccountControlStorageMapper.java:189
final LDAPStorageProvider ldapProvider
Definition: AbstractLDAPStorageMapper.java:44
long getPwdLastSet()
Definition: MSADUserAccountControlStorageMapper.java:318

メンバ詳解

◆ ldapUser

final LDAPObject org.keycloak.storage.ldap.mappers.msad.MSADUserAccountControlStorageMapper.MSADUserModelDelegate.ldapUser
private

◆ logger

final Logger org.keycloak.storage.ldap.mappers.TxAwareLDAPUserModelDelegate.logger = Logger.getLogger(TxAwareLDAPUserModelDelegate.class)
staticinherited

◆ provider

LDAPStorageProvider org.keycloak.storage.ldap.mappers.TxAwareLDAPUserModelDelegate.provider
protectedinherited

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