<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Feb 15, 2016 at 4:57 AM, joller lee <span dir="ltr"><<a href="mailto:joller.lee@gmail.com" target="_blank">joller.lee@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="">On Wed, Feb 10, 2016 at 1:38 PM, Daniel Fisher <span dir="ltr"><<a href="mailto:dfisher@vt.edu" target="_blank">dfisher@vt.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span><div><br></div></span><div>You'll need to edit ldap-authn-config.xml. Update the <span>Acti</span><span>veDirectoryAuthenticationResponseHandler</span> to include a password age and provide an entry resolver that can resolve the pwdLastSet attribute. I've updated the wiki to include an example:</div><div><br></div><div><a href="https://wiki.shibboleth.net/confluence/display/IDP30/LDAPAuthnConfiguration#LDAPAuthnConfiguration-Usinganentryresolvertogeneratepasswordexpirationwarnings" target="_blank">https://wiki.shibboleth.net/confluence/display/IDP30/LDAPAuthnConfiguration#LDAPAuthnConfiguration-Usinganentryresolvertogeneratepasswordexpirationwarnings</a><br></div><div><br></div><div>Let me know if that works for you.</div></div></div></div></blockquote><div><br></div></span><div>With this method, an AccountState(accountWarning) with expiration time is always returned as the result of ValidateUsernamePasswordAgainstLDAP, and the "password expiring" warning view is displayed.</div><div>I guess some customization is needed to determine whether the password is really expiring.</div><div>By the way, with the latest version of ldaptive, a warning period can be designated, by which no customization is needed.</div></div></div></div></blockquote><div><br></div><div>That functionality will be back ported into the next version of the IDP.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>PS. I use Samba 4 and non-privileged users can read the pwdLastSet attribute. Is an entry resolver still needed in this case?</div></div></div></div></blockquote><div><br></div><div>If the user can read their own pwdLastSet attribute, you don't need to wire in a custom entry resolver. By default authentication attributes are read by the user. In that case you only need to add pwdLastSet to idp.authn.LDAP.returnAttributes.</div><div><br></div><div>--Daniel Fisher</div><div><br></div></div></div></div>