Профиль Liberty: невозможно получить стандартные заявки openid connect в токене ID с реестром LDAP / AD - PullRequest
0 голосов
/ 01 мая 2018

Мы настроили экземпляр WebSphere Liberty Profile v18.0.0.1 в качестве поставщика openid connect
Потоки аутентификации работают хорошо.
Проблема в том, что мы не получаем «стандартные» требования OIDC в ​​ID Token: name, family_name, given_name, middle_name, birthdate ...
Запрос аутентификации запрашивает "openid email profile phone" scopes
Претензии, которые мы получаем в виде ID Token: sub, at_hash, realmName, uniqueSecurityName, groupsIds, iss, aud, exp, iat, nonce

Q:

  • как получить другие утверждения в токене ID? не должны ли они автоматически отображаться WLP?
  • Полагаю, это довольно стандартно для сопоставления атрибутов AD с использованием AD в качестве реестра для сервера openid connect вольностью. мы должны использовать строфы типа "scopeToClaimMap" или "attributeConfiguration", как описано здесь ? если да, то есть ли пример, который сопоставляет все стандартные атрибуты ID Token с атрибутом AD?
  • Что-то отсутствует или неправильно в нашей конфигурации server.xml?
    Спасибо

выдержки из server.xml:

<featureManager>
   ...
   <feature>openidConnectServer-1.0</feature>
 </featureManager>

 <openidConnectProvider id="OP" 
                       oauthProviderRef="Oauth" signatureAlgorithm="RS256" 
                       keyStoreRef="..." keyAliasName="..."  issuerIdentifier="..." 
                       idTokenLifetime="1m">
</openidConnectProvider>

<oauthProvider id="Oauth" 
               jwtAccessToken="true" 
               logoutRedirectURL="..." 
               accessTokenLifetime="60">
   <localStore>
     <client name="..." secret="..." displayname="..." redirect="..." 
             scope="openid email profile phone"
             preAuthorizedScope="openid email profile phone" 
             enabled="true">
     </client>
   </localStore>
</oauthProvider>

<ldapRegistry id="..." host="..." port="..." baseDN="..."
              ldapType="Microsoft Active Directory" 
              recursiveSearch="true" sslEnabled="true" 
              bindDN="..." bindPassword="...">
</ldapRegistry>

<oauth-roles>
   <authenticated>
      <special-subject type="ALL_AUTHENTICATED_USERS" />
   </authenticated>
</oauth-roles>

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Решением для получения стандартных утверждений из реестра LDAP / AD является добавление этого к server.xml ("customClaims" - это тег внутри "openidConnectProvider", а не атрибут как состояние в другом ответе и утверждении имена разделяются пробелами, а не запятыми)

<openidConnectProvider id="OP" oauthProviderRef="Oauth" ...
   <customClaims>family_name given_name ...</customClaims>
</openidConnectProvider>
0 голосов
/ 01 мая 2018
  1. Запрошенные области влияют на содержимое, возвращаемое при вызове userinfo API.
  2. Liberty OIDC id_token по умолчанию генерирует только требуемые утверждения, но может быть настроен для явной выборки дополнительных атрибутов LDAP в качестве утверждений id_token. Например, если вы хотите включить family_name и given_name в id_token, ваша конфигурация openidConnectProvider выглядит следующим образом:

    <openidConnectProvider id="OP" oauthProviderRef="Oauth" ...
       customClaims="family_name, given_name">
    
    </openidConnectProvider>
    
  3. Заявка на отображение реестра и использование настраиваемого атрибута в 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, и вы можете определить правило сопоставления.
    Например, если атрибут LDAP для family_name равен familyName, ваша конфигурация будет выглядеть следующим образом:

    <openidConnectProvider id="OP" oauthProviderRef="Oauth"  
    

    customClaimsEnabled = "истина" customClaims = "имя-семьи, имя-имени">

    Наконец, реестр пользователей Liberty LDAP может выполнять поиск только в списке предварительно определенных атрибутов. Вы можете пропустить эти дополнительные шаги, если все обязательные атрибуты находятся в предопределенном списке. Если вы хотите использовать атрибут LDAP, который не определен как свойство федеративного реестра Liberty, вам потребуется выполнить дополнительную настройку LDAP.
    Например, допустим, вы хотите использовать атрибут LDAP loginCount в OIDC, но 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" . 
    

    Подробнее см. https://www.ibm.com/support/knowledgecenter/en/SSAW57_8.5.5/com.ibm.websphere.wim.doc/wimdomain.xsdfile.html

    Если вы используете эти атрибуты, вы можете пропустить дополнительные настройки LDAP.

...