SamlCredential не получает атрибуты группы из ответа SAML Okta

Я использую Okta в качестве IDP, и я настроил операторы атрибутов пользователя и атрибуты группы, как это

введите описание изображения здесь

И предоставляя пользовательские детали samluserdetails, я могу получить пользовательские атрибуты, но не групповые атрибуты.

public class CustomSamlUserDetails implements SAMLUserDetailsService {
    @Override
    public Object loadUserBySAML(SAMLCredential cred) throws UsernameNotFoundException {
        AppUser user = new AppUser();
        user.setFirstName(cred.getAttributeAsString("firstName"));
        user.setLastName(cred.getAttributeAsString("lastName"));
        user.setLoginId(cred.getAttributeAsString("loginId"));

        String groupname = cred.getAttributeAsString("role"); // comes null


        return user;
    }
}

Есть ли какая-то конфигурация, которую я пропустил или я неверно извлекаю информацию о группе?

РЕДАКТИРОВАТЬ: если я использую contains фильтр с некоторыми символами, например, у меня есть 3 группы test1, test2 и другие1. Если я использую contains фильтр *, я получаю ноль. Однако, если я использую contains Фильтр с тестом, я получаю test1test2, если пользователь является путем обеих групп). Wildchar не поддерживается в случае групп? Что если в приведенном выше случае пользователь был частью всех 3 групп?

1 ответ

Решение

Я не эксперт OKTA, но я работал пару недель для одного из моих клиентов. Я тестировал с *, но он работал только для фильтра Regex. Для других фильтров мне никогда не удавалось с *. Например, конфигурация без * отлично работала для меня.

ОКТА КОНФИГ

Я использовал код String str = credential.getAttributeAsString("Groups");

Но у меня есть одна проблема: когда у меня больше одной группы, я все равно получаю одну группу. Я хочу иметь список групп вместо этого.

РЕДАКТИРОВАТЬ - O6 февраля

Наконец, я повторно протестировал и смог реализовать запись с использованием регулярных выражений с помощью регулярных выражений. Я использовал фильтр регулярных выражений:

Конфигурация группы ОКТА

В Java я получил группы, как вы предложили:

         String[] str = credential.getAttributeAsStringArray("groups");

     for(int i = 0; i< str.length; i++){
         System.out.println(str[i]);
     }

Результат:

Список захваченных групп

Хорошего дня

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