Skip to content

Commit

Permalink
fix for getting/creating of the user's behavior authentication
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Mar 13, 2023
1 parent 6b6d5ef commit 7ac1cc1
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -205,19 +205,33 @@ public static AuthenticationAttemptDataType findAuthAttemptDataForModule(Connect
return null;
}
AuthenticationBehavioralDataType behavioralDataType = getBehavioralDataForSequence(focus, sequenceIdentifier);
if (behavioralDataType == null) {
return null;
}
List<AuthenticationAttemptDataType> authAttempts = behavioralDataType.getAuthenticationAttempt();
return authAttempts.stream()
.filter(attempt -> sequenceIdentifier.equals(attempt.getSequenceIdentifier())
&& moduleIdentifier.equals(attempt.getModuleIdentifier()))
.findFirst().orElse(null);
}

public static AuthenticationBehavioralDataType getBehavioralDataForSequence(MidPointPrincipal principal, String sequenceId) {
public static AuthenticationBehavioralDataType getOrCreateBehavioralDataForSequence(MidPointPrincipal principal, String sequenceId) {
FocusType focus = principal.getFocus();
return getBehavioralDataForSequence(focus, sequenceId);
return getOrCreateBehavioralDataForSequence(focus, sequenceId);
}

public static AuthenticationBehavioralDataType getBehavioralDataForSequence(FocusType focus, String sequenceId) {
if (focus.getBehavior() == null){
focus.setBehavior(new BehaviorType());
}
return focus.getBehavior().getAuthentication()
.stream()
.filter(authData -> sequenceId.equals(authData.getSequenceIdentifier()))
.findFirst()
.orElse(null);
}

public static AuthenticationBehavioralDataType getOrCreateBehavioralDataForSequence(FocusType focus, String sequenceId) {
if (focus.getBehavior() == null){
focus.setBehavior(new BehaviorType());
}
Expand All @@ -242,7 +256,7 @@ public static AuthenticationAttemptDataType findOrCreateAuthenticationAttemptDat
data = new AuthenticationAttemptDataType();
data.setSequenceIdentifier(connectionEnvironment.getSequenceIdentifier());
data.setModuleIdentifier(connectionEnvironment.getModuleIdentifier());
AuthenticationBehavioralDataType behavior = getBehavioralDataForSequence(focus, connectionEnvironment.getSequenceIdentifier());
AuthenticationBehavioralDataType behavior = getOrCreateBehavioralDataForSequence(focus, connectionEnvironment.getSequenceIdentifier());
behavior.getAuthenticationAttempt().add(data);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ public void recordModuleAuthenticationAttemptFailure(MidPointPrincipal principal
public void recordSequenceAuthenticationSuccess(MidPointPrincipal principal, ConnectionEnvironment connEnv) {
FocusType focusBefore = principal.getFocus().clone();

AuthenticationBehavioralDataType behavior = AuthUtil.getBehavioralDataForSequence(principal, connEnv.getSequenceIdentifier());
AuthenticationBehavioralDataType behavior = AuthUtil.getOrCreateBehavioralDataForSequence(principal, connEnv.getSequenceIdentifier());

Integer failedLogins = behavior.getFailedLogins();

Expand Down Expand Up @@ -193,7 +193,7 @@ private void processFocusChange(MidPointPrincipal principal, CredentialPolicyTyp
FocusType focusAfter = principal.getFocus();
FocusType focusBefore = focusAfter.clone();

AuthenticationBehavioralDataType behavior = AuthUtil.getBehavioralDataForSequence(principal, connEnv.getSequenceIdentifier());
AuthenticationBehavioralDataType behavior = AuthUtil.getOrCreateBehavioralDataForSequence(principal, connEnv.getSequenceIdentifier());

Integer failedLogins = behavior.getFailedLogins();
LoginEventType lastFailedLogin = behavior.getLastFailedLogin();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ public boolean equals(Object obj) {
public void recordPasswordAuthenticationSuccess(@NotNull MidPointPrincipal principal) {
String channel = getChannel();
ConnectionEnvironment connectionEnvironment = createConnectEnvironment(channel);
AuthenticationBehavioralDataType behavior = AuthUtil.getBehavioralDataForSequence(principal.getFocus(), connectionEnvironment.getSequenceIdentifier());
AuthenticationBehavioralDataType behavior = AuthUtil.getOrCreateBehavioralDataForSequence(principal.getFocus(), connectionEnvironment.getSequenceIdentifier());

FocusType focusBefore = principal.getFocus().clone();
Integer failedLogins = behavior.getFailedLogins();
Expand Down Expand Up @@ -268,7 +268,7 @@ public void recordPasswordAuthenticationFailure(String name, String reason) {
}
ConnectionEnvironment connectionEnvironment = createConnectEnvironment(channel);
if (principal != null && focus != null) {
AuthenticationBehavioralDataType behavior = AuthUtil.getBehavioralDataForSequence(focus, connectionEnvironment.getSequenceIdentifier());
AuthenticationBehavioralDataType behavior = AuthUtil.getOrCreateBehavioralDataForSequence(focus, connectionEnvironment.getSequenceIdentifier());

FocusType focusBefore = focus.clone();
Integer failedLogins = behavior.getFailedLogins();
Expand Down

0 comments on commit 7ac1cc1

Please sign in to comment.