Ограничение перечня доступных методов первого фактора#
Процедура 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[]{});
}
}
}