我们已将WebSphere Liberty Profile v18.0.0.1的实例配置为openid connect provider
认证流程运作良好
问题是我们没有在ID Token
中获得“标准”OIDC声明:name
,family_name
,given_name
,middle_name
,{{1 }} ...
身份验证请求要求birthdate
范围
我们在"openid email profile phone"
中捆绑的声明包括:ID Token
,sub
,at_hash
,realmName
,uniqueSecurityName
,groupsIds
, iss
,aud
,exp
,iat
问:
nonce
或"scopeToClaimMap"
之类的节?若有,那么将所有"attributeConfiguration"
标准属性映射到AD属性的示例是什么? ID Token
配置中是否有遗漏或错误?
感谢摘自server.xml
:
server.xml
答案 0 :(得分:3)
Liberty OIDC id_token默认只发出所需的声明,但可以配置为显式获取其他LDAP属性作为id_token的声明。例如,如果要在id_token中包含family_name
和given_name
,则openidConnectProvider
配置如下所示:
<openidConnectProvider id="OP" oauthProviderRef="Oauth" ...
customClaims="family_name, given_name">
</openidConnectProvider>
对注册表映射的声明以及在LDAP中使用自定义属性与userinfo类似,请参阅https://www.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.wlp.nd.doc/ae/twlp_config_scopes_claims_userinfo.html
以下是一些提示:
自定义声明名称可以与LDAP属性名称不同,您可以定义映射规则
例如,如果family_name
的LDAP属性为familyName
,则您的配置将如下所示:
<openidConnectProvider id="OP" oauthProviderRef="Oauth"
customClaimsEnabled =&#34;真&#34; customClaims =&#34; family_name,given_name&#34;&gt;
&LT; claimToUserRegistryMap family_name =&#34; familyName&#34; /&gt;
&LT; claimToUserRegistryMap given_name =&#34; givenName&#34; /&gt;
&LT; / openidConnectProvider&GT;
最后,Liberty LDAP用户注册表只能搜索预定义属性的列表。如果所有必需属性都在预定义列表中,则可以跳过此额外步骤。如果要使用未定义为Liberty联合注册表属性的LDAP属性,则需要执行其他LDAP设置
例如,假设您要在OIDC中使用LDAP属性loginCount
,但loginCount
不是Liberty LDAP注册表定义的属性,则需要配置"attributeConfiguration"
,如下所示
<ldapRegistry ......
<attributeConfiguration>
<attribute name="loginCount" propertyName="seeAlso" entityType="PersonAccount"/>
</attributeConfiguration>
...
</ldapRegistry>
对于person对象,这是预定义的联合存储库属性列表 -
"uid",
"cn",
"sn",
"preferredLanguage",
"displayName",
"initials",
"mail",
"ibmPrimaryEmail",
"jpegPhoto",
"labeledURI",
"carLicense",
"telephoneNumber",
"facsimileTelephoneNumber",
"pager",
"mobile",
"homePostalAddress",
"postalAddress",
"roomNumber",
"l",
"localityName",
"st",
"stateOrProvinceName",
"street",
"postalCode",
"city",
"employeeType",
"employeeNumber",
"manager",
"secretary",
"departmentNumber",
"title",
"ibmJobTitle",
"c",
"countryName",
"givenName",
"homeAddress",
"businessAddress",
"description",
"businessCategory",
"seeAlso",
"kerberosId",
"photoURL",
"photoURLThumbnail" .
如果您使用这些属性,则可以跳过其他LDAP设置。
答案 1 :(得分:0)
从LDAP / AD注册表获取标准声明的解决方案是将其添加到server.xml
("customClaims"
是"openidConnectProvider"
内的标记,而不是作为状态的属性其他答案,声明名称用空格分隔,而不是逗号。
<openidConnectProvider id="OP" oauthProviderRef="Oauth" ...
<customClaims>family_name given_name ...</customClaims>
</openidConnectProvider>