2014-10-28 34 views
2

我有一個自定義的UserStoreManager作爲輔助用戶存儲在WSO2 Identity Server 5.0.0中運行。 它完美地用於驗證用戶。 將其與OpenID Connect身份驗證一起使用時,預期的聲明不會返回到/userinfo?schema=openid請求的響應中的客戶端。 記錄在定製UserStoreManager揭示方法getUserPropertyValues()獲取與以下權利要求名稱調用:如何定義OIDC/userinfo請求的用戶聲明列表

["postalcode", "mail", "localityName", "sn", "cn", "nickName", "telephoneNumber", "gender", "givenName", "url", "country"] 

的響應於/userinfo請求實際上僅返回從該列表中聲稱。這是不可能的其他索賠被退回。

我不明白的是這個清單來自哪裏。 「http://wso2.org/oidc/claim」的已配置聲明映射將例如「postalcode」定義爲「默認支持= false」和「必需= false」。 所以我不期望它在列表中。在另一方面,根據權利要求的「子」(或它被映射到名稱:「UID」)是不在列表中,但其在方言定義「http://wso2.org/oidc/claim」是

  • 權利要求的URI:子
  • 映射屬性(一個或多個):UID
  • 默認支持:真
  • 必需:

此外 「子」 是由OIDC規格的定義所要求的權利要求(見http://openid.net/specs/openid-connect-core-1_0.html#UserInfoResponse)。

哪裏可以定義應該由/ userinfo?schema = openid請求爲成功驗證的用戶返回的聲明列表?

回答

0

調用userinfo端點,我們獲得http://wso2.com/oidc/claim方言中列出的聲明的用戶屬性值。

在聲明配置中,我們聲明瞭uri和用戶存儲中的特定屬性(主用戶和次用戶存儲的默認值)。 例如:http://wso2.org/oidc/claim/sub及其映射屬性爲uid

如果輔助用戶存儲不支持此默認屬性值,則必須在映射屬性下配置它。 例如:

secondary user store domain = SECONDARY_ 
supported attribute value fore sub = subject 
Configuration for mapped attribute = uid;SECONDARY_/subject 

現在,您將得到正確的屬性值列表getUserPropertyValues()方法。

以下配置在管理控制檯配置文件管理

默認支持=真 使用管理控制檯中的這個屬性默認提供 編輯必需=真 該屬性必須提起,當你更新的用戶配置文件。