【问题标题】:Spring Security SAML - principle attributes not showingSpring Security SAML - 原则属性未显示
【发布时间】:2015-07-21 12:05:31
【问题描述】:

我已经部署了 SAML 示例应用程序。我也注册了 SSOCircle 并且能够正确登录。

在经过身份验证的页面上 - 主体的 SAML 属性没有显示任何内容。在这里,我期待名字,姓氏等。

对于诸如姓名、原则、姓名 ID 之类的所有内容 - 都显示了我的电子邮件地址,我希望其中一个是我的用户 ID。

Name:   om.singh@XXXX.com
Principal:  om.sXX@XXXX.com
Name ID:    om.sXX@XXXX.com

任何建议,因为我需要获取名字、姓氏以及用户 ID。

问候 呸

【问题讨论】:

    标签: spring saml userid


    【解决方案1】:

    你可以试试下面的代码:

        public Object loadUserBySAML(SAMLCredential credential) throws UsernameNotFoundException 
        {
            String userName = credential.getNameID().getValue();
            String email     = credential.getAttributeAsString("EmailAddress");
            String firstName = credential.getAttributeAsString("FirstName");
            String lastName  = credential.getAttributeAsString("LastName");
    }
    

    【讨论】:

      【解决方案2】:

      如果您想检查身份验证断言中返回的属性,在您的 SAMLUserDetailsS​​ervice 的实现中,您可以执行以下操作:

      @Override
      public Object loadUserBySAML(SAMLCredential samlCredential) throws UsernameNotFoundException {
          String userID = samlCredential.getNameID().getValue();
          for(Attribute attr : samlCredential.getAttributes()) {
              String[] attrVals = samlCredential.getAttributeAsStringArray(attr.getName());
              List<String> values = new ArrayList<>(Arrays.asList(attrVals));
              LOG.info(String.format("%s (%s) : %s", attr.getName(), attr.getFriendlyName(), values));
          }
          ...
          ...
      }
      

      好的,可能不是提取细节的最佳方式,但你明白了。

      【讨论】:

        猜你喜欢
        • 2014-08-06
        • 1970-01-01
        • 2018-10-02
        • 2016-08-23
        • 2020-09-24
        • 1970-01-01
        • 1970-01-01
        • 2014-11-27
        • 2015-04-10
        相关资源
        最近更新 更多