Single sign on 如何设置Shibboleth 3身份提供程序?

Single sign on 如何设置Shibboleth 3身份提供程序?,single-sign-on,saml,saml-2.0,shibboleth,Single Sign On,Saml,Saml 2.0,Shibboleth,编辑 所以,我想我就快到了。唯一仍然缺少的是Shibboleth IdP返回一个加密的临时名称ID,我需要它返回用户名,未加密。如果有人能让我通过最后一个拦截器,我会记下答案 (编辑结束) 我一直在尝试设置Shibboleth 3 IdP(我们的应用程序支持SAML,我们需要一个测试环境) 我的目标是一个查询LDAP目录以提供身份验证的简单环境 我设置了Shibboleth IdP 3,它似乎可以正确地查询AD,但我很难让它返回我请求的属性(uid、名字、姓氏、电子邮件) 我很确定我的问题出在a

编辑

所以,我想我就快到了。唯一仍然缺少的是Shibboleth IdP返回一个加密的临时名称ID,我需要它返回用户名,未加密。如果有人能让我通过最后一个拦截器,我会记下答案

(编辑结束)

我一直在尝试设置Shibboleth 3 IdP(我们的应用程序支持SAML,我们需要一个测试环境)

我的目标是一个查询LDAP目录以提供身份验证的简单环境

我设置了Shibboleth IdP 3,它似乎可以正确地查询AD,但我很难让它返回我请求的属性(uid、名字、姓氏、电子邮件)

我很确定我的问题出在attribute-resolver.xml和attribute-filter.xml文件中,但我没有任何运气让它工作

基本上,我成功登录(就Shibboleth而言),但当它将断言传递回我的应用程序时,所有属性都不存在

我曾尝试将它们添加到Attribute-resolver.xml和Attribute-filter.xml,但随后在idp-warn.log(下面)中出现错误。这是一个凭证错误。我很确定用户名密码是正确的,因为shibboleth能够对我进行身份验证(如果这是错误的,它会失败,不是吗?),所以我的设置肯定有其他问题

我还尝试在断言名称标识符中返回用户名,但我似乎只得到一个base-64编码的字符串(解码它会产生无法解码回字符串的字节,因此我不确定其中包含什么)


在这一点上,我真正可以使用的是一个很好的如何使用LDAP设置Shibboleth IdP 3的参考。我一直在网上浏览他们的文档,虽然那里有很多原始数据,但要得到一个列表,列出所有必须做的事情,以便启动并运行它,这是非常具有挑战性的。有什么建议吗?

不是一个完整的答案,而且我还没有与shibboleth合作过,但是在设置SAML时,我们遇到了与NameID相同的问题

我相信本页显示了设置shibboleth将发送的姓名id的热点:

这个答案描述了不同名称方案的含义

不过,我们所做的是在saml config for
SAMLAuthenticationProvider
中添加了用户详细信息,其中有一段漂亮的代码,我非常自豪:

@Override
public Object loadUserBySAML(SAMLCredential credential) throws UsernameNotFoundException {
    try {
        String login = credential.getAttributeByName("login").getAttributeValues().get(0).getDOM().getFirstChild().getNodeValue();
        return loadUserByUsername(login);
    } catch (Exception e) {
        LOG.error("could not get login name from saml credential", e);
        throw new UsernameNotFoundException("Could not load user", e);
    }
}

idp的东西是由第三方处理的,所以我猜是他们将这个自定义属性添加到saml响应中的。我想你可以配置shibboleth来做同样的事情。

嗨,丹尼斯:谢谢你的回复。您链接到的Shibboleth wiki是针对v2的。不幸的是,他们在版本3中更新了配置系统。现在它非常复杂,v2在属性解析器中指定的方式被认为是遗留的。在Shibboleth用户论坛上的一些人的帮助下,我最终还是设法混过去了,并让它工作起来。@JMarsch,是的,在我们的应用程序中实现saml登录非常痛苦。我不知道为什么每件事都要这么复杂。告诉我吧——太糟糕了。