Ограничение перечня доступных методов первого фактора#

Процедура 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[]{});
        }
    }
}