Ограничение перечня доступных методов первого фактора#
Процедура FFmethods позволяет при входе в приложение предлагать
пользователю только определенные методы идентификации и аутентификации
(аналогичную процедуру с иным перечнем методов, можно назначить другому
приложению). Для обозначения методов аутентификации первого фактора в
процедуре используются следующие идентификаторы:
password– вход по логину и паролю;x509– вход по электронной подписи;externalIdps– вход через внешние поставщики идентификации (социальные сети и пр.);spnego– вход по сеансу операционной системы;sms– вход по коду подтверждения в SMS-сообщении.knownDevice– вход по известному устройству;qrCode– вход по QR-коду;webAuthn– вход с помощью ключей безопасности (WebAuthn, Passkey, FIDO2);tls– вход на основе переданного HTTP-заголовка.
public class FFmethods implements Strategy {
private final Logger logger = LoggerFactory.getLogger("com.identityblitz.idp.flow.dynamic");
@Override public StrategyBeginState begin(final Context ctx) {
if(ctx.claims("subjectId") != null)
return StrategyState.ENOUGH();
else
return StrategyState.MORE(new String[]{"password","x509"});
}
@Override public StrategyState next(final Context ctx) {
Integer reqFactor = (ctx.user() == null) ? null : ctx.user().requiredFactor();
if(reqFactor == null || reqFactor == 0)
return StrategyState.ENOUGH();
else {
if(reqFactor == ctx.justCompletedFactor())
return StrategyState.ENOUGH();
else
return StrategyState.MORE(new String[]{});
}
}
}