Ответ 1
Нет такой функциональности, встроенной в ASP.NET Identity 2. Проще всего добавить поле пользователя, например LastPasswordChangedDate. Затем проверьте это поле во время каждой авторизации.
public class ApplicationOAuthProvider : OAuthAuthorizationServerProvider
{
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
var user = await GetUser(context.UserName, context.Password);
if(user.LastPasswordChangedDate.AddDays(20) < DateTime.Now)
// user needs to change password
}
}