#462 AuthTokenSubjectNameDefault exception with custom attribute in X500Name and DN
Closed: migrated by dmoluguw. Opened by nkinder.

Although we seem to support this feature as per the administration guide and
code, directory based enrollment fails for a user directory and a CA instance
configured with "non standard" components in the DN, other than
CN,OU,O,C,L,TITLE,ST,STREET,UID,MAIL,E,DC

with a Java exception
[31/Jan/2011:20:16:03]http-9444-Processor24: AuthTokenSubjectNameDefault:
java.io.IOException: Unknown AVA keyword 'CARLICENSE'.

and the CMSServlet exits immediately

In the EE service page:
Sorry, your request is not submitted. The reason is "Subject Name Not Found".

Steps to Reproduce:

  1. have versions like described in "Version-Release number of selected
    component"

  2. install 389, install Dogtag, run pkicreate to have a functional CA test
    instance

  3. have a user directory so that the dn is like below:

One "standard" entry, for example:
ldapsearch -xLLL -h 10.14.7.221 -p 389 -b dc=testme uid=guest1 dn uid
dn: uid=guest1,ou=People,dc=testme
uid: guest1

and for the purpose of this test, another entry with a DN composed with the
attribute carLicense, not a uid attribute:
ldapsearch -xLLL -h 10.14.7.221 -p 389 -b dc=testme uid=newguest1 dn uid
dn: carlicense=8abc123,ou=People,dc=testme
uid: newguest1

  1. /etc/init.d/pki-ca stop

  2. follow the administration guide at
    http://docs.redhat.com/docs/en-US/Red_Hat_Certificate_System/8.0/html/Admin_Gui
    de/Managing_Subject_Names_and_Subject_Alternative_Names.html#DNs_in_the_Certifi
    cate_System-Allowed_Characters_for_Value_Types

to allow for the purpose of this test, the DN or X500Name composed with the
attribute carLicense

vi /etc/pki-ca/CS.cfg
...
X500Name.carLicense.oid=1.3.6.1.4.1.1466.115.121.1.15
X500Name.carLicense.class=netscape.security.x509.DirStrConverter

  1. add the uid and password authentication plugin configuration, for example:

auths.impl.UidPwdDirAuth.class=com.netscape.cms.authentication.UidPwdDirAuthent
ication
...
auths.instance.UserDirEnrollment.dnpattern=uid=$attr.uid,ou=people,dc=testme
auths.instance.UserDirEnrollment.ldapByteAttributes=
auths.instance.UserDirEnrollment.ldapStringAttributes=carlicense
auths.instance.UserDirEnrollment.pluginName=UidPwdDirAuth
auths.instance.UserDirEnrollment.ldap.basedn=ou=people,dc=testme
auths.instance.UserDirEnrollment.ldap.maxConns=
auths.instance.UserDirEnrollment.ldap.minConns=
auths.instance.UserDirEnrollment.ldap.ldapconn.host=10.14.7.221
auths.instance.UserDirEnrollment.ldap.ldapconn.port=389
auths.instance.UserDirEnrollment.ldap.ldapconn.secureConn=false
auths.instance.UserDirEnrollment.ldap.ldapconn.version=3

  1. /etc/init.d/pki-ca start

  2. browse to the EE service for
    Directory-Authenticated User Dual-Use Certificate Enrollment
    for example
    https://dirsec2-seg.lab.sjc.redhat.com:9444/ca/ee/ca/profileSelect?profileId=c
    aDirUserCert

  3. provide with uid=guest1 and password, expect success

  4. provide with uid=newguest1 and password, expect failure

Actual results:

https://dirsec2-seg.lab.sjc.redhat.com:9444/ca/ee/ca/profileSelect?profileId=ca
DirUserCert
NOT ok

Sorry, your request is not submitted. The reason is "Subject Name Not Found".

/var/log/pki-ca/debug
...
[01/Feb/2011:16:44:07]http-9444-Processor25: CMSServlet:service() uri =
/ca/ee/ca/profileSubmit
[01/Feb/2011:16:44:07]http-9444-Processor25: CMSServlet::service() param
name='cert_request_type' value='crmf'
[01/Feb/2011:16:44:07]http-9444-Processor25: CMSServlet::service() param
name='cert_request'
value='MIIBHDCCARgwgcECBB9QmSEwgYOAAQKlDjAMMQowCAYDVQQDEwF4plwwDQYJKoZI
hvcNAQEBBQADSwAwSAJBAMk7AmksCJNQl2fswnBnUWojXN5UFmiEVVzuFfYKU/Ym
U2cw4rb855NRiCm0PIt4U28PvCkKFNNgpcWB15DndL0CAwEAAakQMA4GA1UdDwEB
/wQEAwIF4DAzMBUGCSsGAQUFBwUBAQwIcmVnVG9rZW4wGgYJKwYBBQUHBQECDA1h
dXRoZW50aWNhdG9yoVIwDQYJKoZIhvcNAQEFBQADQQBH7zYSHBDBONMYJH07R5Q5
gOHziTZ+6D89iRb31slyhqXlZ1GToyg2cgl3Qhk8Jli5S+Ln+VFlYDlG6v41IsVE'
[01/Feb/2011:16:44:07]http-9444-Processor25: CMSServlet::service() param
name='renewal' value='false'
[01/Feb/2011:16:44:07]http-9444-Processor25: CMSServlet::service() param
name='keyLength' value='512'
[01/Feb/2011:16:44:07]http-9444-Processor25: CMSServlet::service() param
name='uid' value='newguest1'
[01/Feb/2011:16:44:07]http-9444-Processor25: CMSServlet::service() param
name='xmlOutput' value='false'
[01/Feb/2011:16:44:07]http-9444-Processor25: CMSServlet::service() param
name='profileId' value='caDirUserCert'
[01/Feb/2011:16:44:07]http-9444-Processor25: CMSServlet::service() param
name='pwd' value='(sensitive)'
[01/Feb/2011:16:44:07]http-9444-Processor25: CMSServlet: caProfileSubmit
start to service.
[01/Feb/2011:16:44:07]http-9444-Processor25: xmlOutput false
[01/Feb/2011:16:44:07]http-9444-Processor25: Start of ProfileSubmitServlet
Input Parameters
...
[01/Feb/2011:16:44:07]http-9444-Processor25: Repository: in
getNextSerialNumber.
[01/Feb/2011:16:44:07]http-9444-Processor25: Repository: getNextSerialNumber:
returning retSerial 346
[01/Feb/2011:16:44:07]http-9444-Processor25: EnrollProfile: createRequest 346
[01/Feb/2011:16:44:07]http-9444-Processor25: ProfileSubmitServlet
profileSetid=userCertSet
[01/Feb/2011:16:44:07]http-9444-Processor25: ProfileSubmitServlet: request
346
[01/Feb/2011:16:44:07]http-9444-Processor25: ProfileSubmitServlet: populating
request inputs
[01/Feb/2011:16:44:07]http-9444-Processor25: Start parseCRMF
MIIBHDCCARgwgcECBB9QmSEwgYOAAQKlDjAMMQowCAYDVQQDEwF4plwwDQYJKoZI
hvcNAQEBBQADSwAwSAJBAMk7AmksCJNQl2fswnBnUWojXN5UFmiEVVzuFfYKU/Ym
U2cw4rb855NRiCm0PIt4U28PvCkKFNNgpcWB15DndL0CAwEAAakQMA4GA1UdDwEB
/wQEAwIF4DAzMBUGCSsGAQUFBwUBAQwIcmVnVG9rZW4wGgYJKwYBBQUHBQECDA1h
dXRoZW50aWNhdG9yoVIwDQYJKoZIhvcNAQEFBQADQQBH7zYSHBDBONMYJH07R5Q5
gOHziTZ+6D89iRb31slyhqXlZ1GToyg2cgl3Qhk8Jli5S+Ln+VFlYDlG6v41IsVE
[01/Feb/2011:16:44:07]http-9444-Processor25: EnrollInput ::in verifyPOP
[01/Feb/2011:16:44:07]http-9444-Processor25: POP verification begins:
[01/Feb/2011:16:44:07]http-9444-Processor25: POP verification using internal
token
[01/Feb/2011:16:44:07]http-9444-Processor25: SignedAuditEventFactory:
create() message=[AuditEvent=PROOF_OF_POSSESSION][SubjectID=$NonRoleUser$][Outc
ome=Success] checking proof of possession

[01/Feb/2011:16:44:07]http-9444-Processor25: Start parseCertReqMsg
[01/Feb/2011:16:44:07]http-9444-Processor25: EnrollProfile: validity not
supplied
[01/Feb/2011:16:44:07]http-9444-Processor25: SignedAuditEventFactory:
create() message=[AuditEvent=PROFILE_CERT_REQUEST][SubjectID=$NonRoleUser$][Out
come=Success][ReqID=346][ProfileID=caDirUserCert][CertSubject=CN=Certificate
Authority,O=dirsec2caroot20100830] certificate request made with certificate
profiles

[01/Feb/2011:16:44:07]http-9444-Processor25: BasicProfile: populate() policy
setid =userCertSet
[01/Feb/2011:16:44:07]http-9444-Processor25: AuthTokenSubjectNameDefault:
populate start
[01/Feb/2011:16:44:07]http-9444-Processor25: AuthTokenSubjectNameDefault:
java.io.IOException: Unknown AVA keyword 'CARLICENSE'.
[01/Feb/2011:16:44:07]http-9444-Processor25: ProfileSubmitServlet: populate
Subject Name Not Found
[01/Feb/2011:16:44:07]http-9444-Processor25: CMSServlet: curDate=Tue Feb 01
16:44:07 PST 2011 id=caProfileSubmit time=11

sample with a CMS.debugStackTrace() in another test instance with
pki-ca-8.1.0-3
pki-common-8.1.0-2

[01/Feb/2011:18:54:12]http-9444-Processor25: BasicProfile: populate() policy
setid =userCertSet
[01/Feb/2011:18:54:12]http-9444-Processor25: AuthTokenSubjectNameDefault:
populate start
java.lang.Exception: Debug
at com.netscape.cmscore.util.Debug.printStackTrace(Debug.java:227)
at
com.netscape.cmscore.apps.CMSEngine.debugStackTrace(CMSEngine.java:1361)
at com.netscape.certsrv.apps.CMS.debugStackTrace(CMS.java:394)
at com.netscape.cms.profile.def.AuthTokenSubjectNameDefault.populate(Au
thTokenSubjectNameDefault.java:146)
at
com.netscape.cms.profile.def.EnrollDefault.populate(EnrollDefault.java:180)
at
com.netscape.cms.profile.common.BasicProfile.populate(BasicProfile.java:1074)
at
com.netscape.cms.profile.common.EnrollProfile.populate(EnrollProfile.java:1194)
at com.netscape.cms.servlet.profile.ProfileSubmitServlet.process(Profil
eSubmitServlet.java:1127)
at
com.netscape.cms.servlet.base.CMSServlet.service(CMSServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcce
ssorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:537)
at
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
at
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(App
licationFilterChain.java:262)
at org.apache.catalina.core.ApplicationFilterChain.access$0(Application
FilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFil
terChain.java:171)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(Application
FilterChain.java:167)
at com.netscape.cms.servlet.filter.EERequestFilter.doFilter(EERequestFi
lter.java:139)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcce
ssorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:537)
at
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
at
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:218)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(App
licationFilterChain.java:210)
at org.apache.catalina.core.ApplicationFilterChain.access$0(Application
FilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFil
terChain.java:171)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(Application
FilterChain.java:167)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapper
Valve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContext
Valve.java:172)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:542)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVa
lve.java:108)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.
processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndp
oint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFo
llowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(Thread
Pool.java:685)
at java.lang.Thread.run(Thread.java:636)
[01/Feb/2011:18:54:12]http-9444-Processor25: AuthTokenSubjectNameDefault:
java.io.IOException: Unknown AVA keyword 'CARLICENSE'.
[01/Feb/2011:18:54:12]http-9444-Processor25: ProfileSubmitServlet: populate
Subject Name Not Found
[01/Feb/2011:18:54:12]http-9444-Processor25: CMSServlet: curDate=Tue Feb 01
18:54:12 PST 2011 id=caProfileSubmit time=370


Metadata Update from @nkinder:
- Issue assigned to vakwetu
- Issue set to the milestone: UNTRIAGED

Dogtag PKI is moving from Pagure issues to GitHub issues. This means that existing or new
issues will be reported and tracked through Dogtag PKI's GitHub Issue tracker.

This issue has been cloned to GitHub and is available here:
https://github.com/dogtagpki/pki/issues/1033

If you want to receive further updates on the issue, please navigate to the
GitHub issue and click on Subscribe button.

Thank you for understanding, and we apologize for any inconvenience.

Metadata Update from @dmoluguw:
- Issue close_status updated to: migrated
- Issue status updated to: Closed (was: Open)

Metadata