1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.bremersee.spring.security.ldaptive.userdetails;
18
19 import java.util.Optional;
20 import lombok.AccessLevel;
21 import lombok.Getter;
22 import org.bremersee.spring.security.ldaptive.authentication.AccountControlEvaluator;
23 import org.ldaptive.LdapAttribute;
24 import org.ldaptive.LdapEntry;
25 import org.springframework.util.ObjectUtils;
26
27
28
29
30
31
32 public class LdaptivePwdLastSetRememberMeTokenProvider
33 extends LdaptiveEvaluatedRememberMeTokenProvider {
34
35
36
37
38 @Getter(AccessLevel.PROTECTED)
39 private String pwdLastSetAttributeName = "pwdLastSet";
40
41
42
43
44 public LdaptivePwdLastSetRememberMeTokenProvider() {
45 this(null);
46 }
47
48
49
50
51
52
53 public LdaptivePwdLastSetRememberMeTokenProvider(
54 AccountControlEvaluator accountControlEvaluator) {
55 this(accountControlEvaluator, null);
56 }
57
58
59
60
61
62
63
64 public LdaptivePwdLastSetRememberMeTokenProvider(
65 AccountControlEvaluator accountControlEvaluator,
66 String pwdLastSetAttributeName) {
67 super(accountControlEvaluator);
68 setPwdLastSetAttributeName(pwdLastSetAttributeName);
69 }
70
71
72
73
74
75
76 public void setPwdLastSetAttributeName(String pwdLastSetAttributeName) {
77 if (!ObjectUtils.isEmpty(pwdLastSetAttributeName)) {
78 this.pwdLastSetAttributeName = pwdLastSetAttributeName;
79 }
80 }
81
82 @Override
83 public String getRememberMeToken(LdapEntry ldapEntry) {
84 return Optional
85 .ofNullable(ldapEntry.getAttribute(getPwdLastSetAttributeName()))
86 .map(LdapAttribute::getStringValue)
87 .map(value -> getAccessControlValue(ldapEntry) + value)
88 .orElseGet(() -> LdaptiveRememberMeTokenProvider.invalid().getRememberMeToken(ldapEntry));
89 }
90
91 }