簡體   English   中英

如何從 SAML 響應中讀取多個 AttributeValues?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM