[英]How to read multiple AttributeValues from a SAML response?
我正在使用 Keycloak SAML、SpringBoot (Java),並且我收到一個包含用戶所在組的響應,所以我在 SAML 響應中有這個屬性:
<saml:Attribute Name="member" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
<saml:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">/ANOTHER_TEST_GROUP</saml:AttributeValue>
<saml:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">/TEST_GROUP</saml:AttributeValue>
</saml:Attribute>
屬性名稱是成員,他有 2 個值“/ANOTHER_TEST_GROUP”和“TEST_GROUP”,但在我的代碼中,當我嘗試像這樣獲取“成員”值時( data.getName() returns "member"
):
model.addAttribute(data.getName(), credential.getAttributeAsString(data.getName()));
它只得到第一個值,在這種情況下是“/ANOTHER_TEST_GROUP”,我期待得到值列表。
我也嘗試像這樣獲得每個單獨的值:
import from org.opensaml.xml.XMLObject
XMLObject value1 = data.getAttributeValues().get(0);
XMLObject value2 = data.getAttributeValues().get(1);
但是在get(index)
方法之后,沒有有用的方法可以獲取它包含的值
我設法得到了我需要的東西(記住data.getName()
返回成員):
String[] values = credential.getAttributeAsStringArray(data.getName());
System.out.println(values[0]); // prints /ANOTHER_TEST_GROUP
System.out.println(values[1]); // prints /TEST_GROUP
如果有人知道另一種方式,我仍然會保持開放狀態
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.