2012-04-12 83 views
0

我工作的一個項目,以創建一個安全的Web應用程序和STS只返回的NameIdentifier要求和除了在我想回到了的NameIdentifier一個實例一切正常身份。您可以通過使用WIF WIF

在這種情況下,我得到以下SamlAssertion錯誤: 「A SamlAssertion requires at least one statement」

現在,這裏的奇數位 - 我使用的NameIdentifier標準xmlsoap模式定義(http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier),只有當發送此聲明時纔會發生錯誤。

如果我發送(例如)http://schemas.xmlsoap.org/ws/2005/05/identity/claims/email或我編了一個,這一切都有效 - 如果您更改名稱標識聲明(適用於http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameIdentifier)的套管,它甚至可以工作!

是否有可能nameidentifier是SAML或WIF中的關鍵字,因此不能是唯一發送的聲明? WIF明確允許發送單一聲明,而不是自己的名稱標識。

回答

1

Is it possible that nameidentifier is a keyword in SAML or WIF

是的。在SAML令牌格式中,您有單獨的主題概念(唯一標識實體的內容)和屬性概念(關於實體的信息)。

WIF模型代表所有這些東西作爲聲明。當您將其寫入SAML令牌時,大多數索賠都映射到SAML屬性,但nameidentifier是特殊的,它會作爲主題寫入。

但它看起來像你正在生產一個完全空的AttributeStatement的SAML令牌。你可否確認?你使用任何類型的自定義令牌處理程序?

我不確定,但我認爲當WIF遇到只有nameidentifier聲明的ClaimsIdentity時,它應該在AuthenticationStatement和AttributeStatement下將此聲明作爲SAML主體寫入,所以錯誤你不應該發生。

+0

感謝您對延遲的確認和道歉 - 我解決了這個問題,但只是急於確定我的想法是否屬實。爲了我的目的,只傳遞名稱標識就足夠了,但我已經通過向令牌添加了額外的聲明並從那裏繼續工作。乾杯! – aaaaa 2012-05-09 07:58:20

0

我個人從未使用過NameIdentifier聲明。用戶名應使用Name類型(http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name)傳遞。

我確認你的觀察 - 你不能將NameIdentifier(不管它是什麼)作爲唯一的索賠,但你當然可以將Name作爲唯一索賠。