Принудительная двухфакторная аутентификация#
Процедура Require2ndFactor требует двухфакторной аутентификации для
доступа к приложению. Если пользователь переходит в приложение в рамках
единой сессии, то при наличии одного пройденного фактора у него будет
дополнительно проверен второй фактор, т.е. SSO в этом случае не
сработает.
public class Require2ndFactor 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){
if (ctx.sessionTrack().split(",").length < 2)
return StrategyState.MORE_BUILDER().addMethods(new String[]{"totp","sms","flex_gpn_key"}).setSelectMethod(true).build();
else
return StrategyState.ENOUGH();
}
else {
return StrategyState.MORE(new String[]{});
}
}
@Override public StrategyState next(final Context ctx) {
if(ctx.justCompletedFactor() == 1)
return StrategyState.MORE_BUILDER().addMethods(new String[]{"totp","sms","flex_gpn_key"}).setSelectMethod(true).build();
else
return StrategyState.ENOUGH();
}
}
- В строчке
return StrategyState.MORE_BUILDER().addMethods(new String[]{"totp","sms","flex_gpn_key"}).setSelectMethod(true).build();: в методе
addMethods(new String[]{"totp","sms","flex_gpn_key"})нужно указать доступные методы второго фактора аутентификации.метод
setSelectMethod(true)отвечает за отображение экрана выбора метода второго фактора аутентификации. Чтобы экран выбора метода не отображался, надо заменитьtrueнаfalse:return StrategyState.MORE_BUILDER().addMethods(new String[]{"totp","sms","flex_gpn_key"}).setSelectMethod(false).build();, то