代码之家  ›  专栏  ›  技术社区  ›  tryingToLearn

SamlCredential不从Okta SAML响应中检索组属性

  •  0
  • tryingToLearn  · 技术社区  · 7 年前

    我使用Okta作为IDP,并且我已经像这样配置了用户属性语句和组属性语句

    enter image description here

    通过提供自定义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个组 测试1 , 测试2 其他1 . 如果我使用 包含 过滤器*,我得到空值。 但是如果我使用 包含 使用筛选 测验 ,我明白了 测试1 (和 测试2 ,如果用户是两个组的路径)。 对于组,是否不支持wildchar? 如果在上述情况下,用户是所有3个组的一部分呢?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Ayyaz Mahmood Paracha    7 年前

    我不是OKTA的专家,但我为我的一位客户工作了几周。我用*进行了测试,但它只对我的filter Regex有效。对于其他筛选器,我从未成功使用*。例如,没有*的配置非常适合我。

    OKTA CONFIG

    我用了密码 String str = credential.getAttributeAsString("Groups");

    但我有一个问题,当我有多个团队时,我仍然得到一个团队。我想要一个组列表。

    编辑-2月6日

    最后,我重新测试并能够使用regex实现通配符条目,我使用了regex过滤器:

    OKTA GROUP CONFIGURATION

    在java中,我得到了您建议的组:

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

    结果是:

    List of captured groups

    祝你有美好的一天

    推荐文章