WSO2 Имя пользователя совпадает между шагами MFA

У меня есть поставщик услуг CAS, и мне нужно добавить многофакторную аутентификацию через AzureAD. У меня он настроен и "работает", но пользователь может указать разные учетные записи для получения доступа, и я хочу, чтобы они использовали одно и то же имя пользователя как в CAS (шаг 1 MFA), так и в AzureAD (шаг 2 MFA).

Я рассмотрел политики XACML, но я не нашел документации, которая указывает, что политики могут оценивать атрибуты из нескольких методов аутентификации. Я что-то упустил или политика XACML - это неправильная технология для выполнения нашего варианта использования одного и того же имени пользователя в обоих методах аутентификации?

1 ответ

Да, вы не можете использовать XACML для достижения этого варианта использования. Поскольку это политика XACML, может применяться после полной аутентификации, но этот вариант использования находится внутри потока аутентификации.

Если вы используете WSO2 IS 5.7.0, вы можете добиться этого варианта использования с помощью сценариев адаптивной аутентификации

Вам нужно просто написать скрипт аутентификации, чтобы сравнить имя пользователя обоих шагов

function onLoginRequest(context) {
    executeStep(1, {
        onSuccess: function (context) {
            executeStep(2, {
                onSuccess: function (context){
                    if (!context.steps[1].subject.username != context.steps[2].subject.username) {
                        // 
                        sendError('http://www.example.com/error',{'errorcode':'000403','errorMsg':'You are not allowed to login to this app.'});
                     }
                }
            });
        }
    });
}

Если вы используете более старые версии IS, вам нужно написать собственный аутентификатор для той же логики и добавить в IS. Затем добавьте этот аутентификатор как третий шаг.

Другие вопросы по тегам