2013-04-29 39 views
0

我們有一個規則發出的屬性對我們依託第三方的一個完全匹配以下(很明顯,我已經做了一些改動):發行權利要求中的常量屬性

<Attribute Name="http://example.com/#Something" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"> 
    <AttributeValue xsi:type="xsd:string">http://example.com</AttributeValue> 
</Attribute> 

我不t看到Claim Rule language中的任何內容都可以讓我進行上述操作 - 獲取Attribute Name部分很容易,並且獲得AttributeValue的值很容易,但是添加NameFormat並獲取AttributeValue的類型似乎沒有出現。

例如,這樣的:

=> issue(Type = "http://example.com/#Something", 
     Value = "http://example.com", 
     ValueType = "string"); 

可以得到我們在這裏:

<Attribute Name="http://example.com/#Something"> 
    <AttributeValue a:type="tn:string" xmlns:tn=" http://www.w3.org/2001/XMLSchema" xmlns:a="http://www.w3.org/2001/XMLSchema-instance">http://something.com</AttributeValue> 
</Attribute> 

我們也嘗試http://www.w3.org/2001/XMLSchema#stringValueType具有相當類似的結果。我沒有看到任何可以添加NameFormat的東西,而且我們還需要添加更多的信息到AttributeValue

有沒有辦法只發出一個不斷的索賠?關於價值觀沒有任何變數;我希望能夠將XML放在某個地方,並將其集成到整個SAML消息中。

回答

1

有點晚了,但希望它可以幫助別人。

下面的例子有幫助嗎?

c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"] 
=> issue( 
Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", 
Issuer = c.Issuer, 
OriginalIssuer = c.OriginalIssuer, 
Value = c.Value, 
ValueType = c.ValueType, 
Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/attributename"] = "urn:oasis:names:tc:SAML:2.0:attrname-format:uri"); 

關鍵部分是使用由URI http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/attributename標識的NameFormat來操縱屬性。 http://blogs.msdn.com/b/card/archive/2010/06/21/a-quick-walkthrough-setting-up-ad-fs-saml-federation-with-a-shibboleth-sp.aspx有關於nameformat的更多詳細信息。

可以跳過條件檢查和公正問題索賠如下

=> issue( 
    Type = "http://example.com/#Something", 
    Value = "http://example.com", 
    Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/attributename"] = "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"); 
+0

偉大工程:-)另外,如果你需要發送多個常數,它們在不同的權利要求的規則被髮送。 – 2017-02-10 16:03:56