[ 
https://issues.apache.org/jira/browse/DISPATCH-1634?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17123845#comment-17123845
 ] 

Ganesh Murthy commented on DISPATCH-1634:
-----------------------------------------

The Dispatch Router provides a fields in the sslProfile entity, namely, 
uidFormat and uidNameMappingFile.

The uidFormat allows you to specify a format which will be used to generate an 
identity from the TLS client certificate.

Allowed values in uidFormat can be any combination of
{noformat}
'c'( ISO3166 two character country code), 
's'(state or province), 
'l'(Locality; generally - city), 
'o'(Organization - Company Name), 
'u'(Organization Unit - typically certificate type or brand), 
'n'(CommonName - typically a user name for client certificates) and 
'1'(sha1 certificate fingerprint, as displayed in the fingerprints section when 
looking at a certificate with say a web browser is the hash of the entire 
certificate)
'2'(sha256 certificate fingerprint)
'5' (sha512 certificate fingerprint). 
The user identifier (uid) that is generated based on the uidFormat is a string 
which has a semi-colon as a separator between the components{noformat}

For example the uidFormat can be 
{noformat}
('sslProfile', {'name': 'sslProfile',
             'caCertFile': 'ca-certificate.pem',
             'certFile': 'server-certificate.pem',
             'privateKeyFile': 'server-private-key.pem',
             'uidFormat': 'nsuco',
             'uidNameMappingFile': /path/to/ssl_profile.json,
             'password': 'server-password'}) {noformat}
{noformat}
'nsuco' for uidFormat indicates that the unique certificate identity be 
constructed using CommonName, State, Organization Unit, Country Code and 
Company Name{noformat}
The uidNameMappingFile is the absolute path to the file containing the unique 
id to display name mapping.

For example, the contents of ssl_profile.json file could be
{noformat}
{
    "Danny DeVito;MA;Dev;US;Acme Inc": "ddevito",
    "Jane Doe;MA;Dev;US;Acme Inc": "janedoe",
    "John Doe;MA;Dev;US;Acme Inc": "johndoe",
}
{noformat}
The file is simply a JSON which maps the identity string generated by the 
uidFormat to a user name.

The user name can be empty in which case the router will just return the 
identity string

Now that we have explained how the uidFormat and uidNameMappingFile work, there 
are two parts to this Jira
 # If the certificate identity (string generated using uidFormat) does not 
exist in the uidNameMappingFile, the router does not currently close the 
connection which it will have to do.
 # The router's authplugin SASL relay should be able to prepare to rewrite the 
authorization identity within response of the SASL-INIT (or SASL-RESPONSE) and 
insert the identity from the client cert. To do this we need a way from 
proton-c to
 ## for a server to get the authzid for a sasl external request
 ## for a client to specify the authzid to send with an external request

> Expose client X509 certificate identity (TLS client auth) to the auth service 
> delegate
> --------------------------------------------------------------------------------------
>
>                 Key: DISPATCH-1634
>                 URL: https://issues.apache.org/jira/browse/DISPATCH-1634
>             Project: Qpid Dispatch
>          Issue Type: Improvement
>            Reporter: Keith Wall
>            Priority: Major
>
> For the use-case where Dispatch Router is configured to require the client 
> use TLS client auth (authenticatePeer: yes) and the authServicePlugin is in 
> use, there needs to be a mechanism to expose the X509 certificate identity of 
> the client to the auth service so it can be used to control the`address-authz 
> response. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to