Да, это возможно.
У них есть кое-что из этого документированного (больше похоже на подсказки, как это сделать). Из документов IdentityServer3 UserService :
Частичный вход в систему: в дополнение к полному входу в систему, API-интерфейсы аутентификации могут
выполнить «частичный вход в систему». Частичный вход в систему позволяет службе пользователя
прервать рабочий процесс входа пользователя и перенаправить его на пользовательскую страницу
где они должны выполнить какое-то действие, прежде чем они смогут продолжить вход
(например, выполнение 2fa, заполнение регистрационной формы или принятие
EULA).
Как правило, вам потребуется пользовательский сервис UserService, который будет переопределять либо AuthenticateLocalAsync
, либо AuthenticateExternalAsync
(или оба). В этом методе вы можете убедиться, что они приняли условия (например, проверив вашу базу данных), а если нет, перенаправить их на страницу, чтобы получить их согласие через контекст AuthenticateResult
.
контекста аутентификации.
IdentityServer3.Samples CustomUserService на github имеет пример реализации. Вот фрагмент кода с соответствующими битами:
public override Task AuthenticateLocalAsync(LocalAuthenticationContext context)
{
var user = Users.SingleOrDefault(x => x.Username == context.UserName && x.Password == context.Password);
if (user != null)
{
if (user.AcceptedEula)
{
context.AuthenticateResult = new AuthenticateResult(user.Subject, user.Username);
}
else
{
context.AuthenticateResult = new AuthenticateResult("~/eula", user.Subject, user.Username);
}
}
return Task.FromResult(0);
}
Второй AuthenticateResult
- это тот, который указывает, что нужно что-то еще сделать, так как включена ссылка для перенаправления ("~/eula"
, где вы бы поставили свою страницу «Условия и положения» с флажком).