我正在使用WSO2 Identity Server 5.3
我必须使用用户配置文件中的一些多值属性生成SAML2断言。
假设我有一个逗号分隔的特定声明的值列表,我必须在我的saml断言响应中使用以下结构组织这些属性:
<saml2:Attribute Name="attribute1">
<saml2:AttributeValue>value1</saml2:AttributeValue>
<saml2:AttributeValue>value2</saml2:AttributeValue>
<saml2:AttributeValue>value3</saml2:AttributeValue>
<saml2:AttributeValue>value4</saml2:AttributeValue>
</saml2:Attribute>
我配置了一个STS客户端以获取SAML2断言,并声明我使用多值声明设置的特定用户。
我的问题是我将SAML断言响应视为以下结构:
<saml2:Attribute Name="attribute1">
<saml2:AttributeValue>value1,value2,value3,value4</saml2:AttributeValue>
</saml2:Attribute>
我在tomcat上设置了travelocity应用程序的实例,再次进行了测试,在登录到应用程序并选择SAML流程后,我按预期得到了SAML断言。我可以验证它查看Identity Server的日志文件。
我也使用STS客户端[1]来获取SAML断言,但是当涉及到多值属性时,我得到的是该特定属性的逗号分隔值。
我使用SOAP UI作为我的客户端直接转向管理服务https://localhost:9443/services/wso2carbon-sts?wsdl,但SAML响应与我之前所说的情况完全相同,多值属性作为该特定属性的逗号分隔值。
以下是我在“属性声明”部分中获得的示例:
<saml2:AttributeStatement>
<saml2:Attribute Name="http://wso2.org/claims/im" NameFormat="http://wso2.org/claims/im">
<saml2:AttributeValue
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">jairo_fernandezr,jb_fernandez
</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="http://wso2.org/claims/emailaddress" NameFormat="http://wso2.org/claims/emailaddress">
<saml2:AttributeValue
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">jairo.fernandez@chakray.com
</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="http://wso2.org/claims/givenname" NameFormat="http://wso2.org/claims/givenname">
<saml2:AttributeValue
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">Jairo
</saml2:AttributeValue>
</saml2:Attribute>
</saml2:AttributeStatement>
现在,我想问你是否有另一种方法可以使用管理服务https://localhost:9443/services/wso2carbon-sts?wsdl或其他方法获得SAML断言,其中多值属性结构化为单个值而不是逗号分隔值旅行速度应用。
[1] https://github.com/wso2/product-is/tree/5.x.x/modules/samples/sts
任何评论都将不胜感激。
由于
答案 0 :(得分:0)
WSO2身份服务器5.3.0在Web SAML SSO流程中表现正常。
但默认情况下https://localhost:9443/services/wso2carbon-sts可以找到的服务wso2carbon-sts的行为与我在原帖中描述的不同。
我已经向WSO2团队报告了这个问题,他们在Identity Server的项目中注册了一个错误,你可以看到详细信息here,如果你有兴趣可以跟进。
感谢您的支持