我正在尝试配置我们的WSO2 Identity Server(5.1.0)以与我们的Shibboleth Identity Provider v3(3.2.1)服务器通信 .
当我尝试进行身份验证时,我的Shibboleth IdP日志中出现错误,这表明我的WSO2服务器的元数据错误:
2016-06-30 15:24:48,564 - DEBUG [org.opensaml.saml.metadata.resolver.impl.AbstractMetadataResolver:334] - Metadata backing store does not contain any EntityDescriptors with the ID: MYENTITYID
2016-06-30 15:24:48,564 - DEBUG [org.opensaml.saml.metadata.resolver.impl.BasicRoleDescriptorResolver:198] - Metadata document did not contain a descriptor for entity MYENTITYID
2016-06-30 15:24:48,564 - DEBUG [org.opensaml.saml.metadata.resolver.impl.BasicRoleDescriptorResolver:281] - Metadata document did not contain any role descriptors of type {urn:oasis:names:tc:SAML:2.0:metadata}SPSSODescriptor for entity MYENTITYID
2016-06-30 15:24:48,564 - DEBUG [org.opensaml.saml.metadata.resolver.impl.BasicRoleDescriptorResolver:252] - Metadata document does not contain a role of type {urn:oasis:names:tc:SAML:2.0:metadata}SPSSODescriptor supporting protocol urn:oasis:names:tc:SAML:2.0:protocol for entity MYENTITYID
我在这里关注WSO2网站的文档:https://docs.wso2.com/display/IS510/How+To%3A+Configure+Shibboleth+IdP+as+a+Trusted+Identity+Provider
我有Shib IdP v3与其他服务一起工作,但是对于那个版本来说是一个非常新的版本,除了为依赖方设置属性解析和发布之外,通常不会深入研究Shibboleth .
能够在Shibboleth IdP竞技场或WSO2身份服务器领域拥有更多经验的人能指出我解决这个问题的方向,或者至少缩小它是一般的IdP配置问题还是WSO2元数据问题?
1 回答
WSO2站点的文档基于Shib IdP v2 . 您仍然可以在v3上使用它,但是您需要启用v2兼容性https://wiki.shibboleth.net/confluence/display/IDP30/NameIDGenerationConfiguration
但是,没有必要,v3的步骤非常相似 .
AFAI可以告诉,Shibboleth不支持未指定的名称ID格式 . 可以调整它来支持它,但我没有发现让Shibboleth使用瞬态格式的问题 . 同样,我也看到了不使用持久性名称id的原因 . 因此,无需修改名称ID配置 .
现在,在文件/conf/attribute-filter.xml(或/conf/services.xml加载的属性过滤器文件)上定义了AttributeFilterPolicy . 此策略指定可以向每个SP公开哪些属性,因此每个SP都需要一个条目 .
由于IS还不支持元数据文件,您需要定制一个并将其保存在/metadata/wso2is.xml .WSO2站点中的那个是一个好的开始 . 请记住,如果NameID格式需要未指定的格式,并且您可能希望在SPSSODescriptor中传递其他属性,那么我必须添加以下内容:
AuthnRequestsSigned="true" WantAssertionsSigned="true"
. 我还添加了WSO2IS在向Shibboleth发送请求时将使用的签名和加密x509证书 .接下来,您需要通过向文件/conf/metadata-providers.xml添加类似以下内容来告诉Shibboleth您要使用该元数据文件
<MetadataProvider id="wso2is" xsi:type="FilesystemMetadataProvider" metadataFile="%{idp.home}/metadata/wso2is.xml"> </MetadataProvider>
现在,当您在WSO2IS上配置IdP时,您需要将Shibboleth与WSO2IS共享的声明/属性(在Shibboleth中通过/conf/attribute-filter.xml定义)映射到WSO2 IS方言 . 为此,您转到IdP配置,展开声明配置,然后展开基本声明配置,您可以根据需要添加任意数量的声明映射 . This is an example of the Claims Mappings
我希望这有帮助 .