Skip to content

Commit ec5cfe6

Browse files
authored
Merge pull request #16 from mbtaylor/x509-edits
Modify text concerning ivoa_x509 scheme
2 parents 2386b46 + 54bbae4 commit ec5cfe6

File tree

1 file changed

+44
-20
lines changed

1 file changed

+44
-20
lines changed

AuthVO.tex

Lines changed: 44 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -425,41 +425,59 @@ \subsubsection{\mbox{\tt ivoa\_x509}}\label{sec:ivoa-x509}
425425

426426
The \verb|ivoa_x509| authentication scheme indicates that the service
427427
will accept X.509 client certificates as authentication permits,
428-
and describes how to acquire such certificates.
428+
and optionally describes how to acquire a suitable certificate.
429+
430+
The standard usage model for X.509 certificates is that
431+
a person or organisation obtains a certificate from a
432+
Certification Authority (CA) once its identification has
433+
been verified by a Registration Authority.
434+
435+
A client in posession of a client certificate can then use it to
436+
sign TLS (HTTPS) connections, and the service can examine the signature
437+
to authenticate the identity of the client.
438+
Such authentication will succeed if the service trusts the signing CA.
429439

430440
\begin{description}
431441
\item[Scheme name:] \verb|ivoa_x509|
432442
\item[Parameters:] \mbox{}
433443
\begin{itemize}
434-
\item \verb|access_url| (required) ---
435-
indicates where to get the certificate,
444+
\item \verb|access_url| (optional) ---
445+
indicates where to get a suitable certificate,
436446
see Section~\ref{sec:access-url}
437-
\item \verb|standard_id| (required) ---
447+
\item \verb|standard_id| (required iff \verb|access_url| is present) ---
438448
indicates how to authenticate at \verb|access_url|,
439449
see Section~\ref{sec:standard-id}
440450
\end{itemize}
441-
\item[Login response:] PEM-encoded X.509 certificate chain
442-
including private key
451+
\item[Login response (if used):] PEM-encoded X.509 certificate chain
452+
including private key
443453
\item[Scope:] Origin of challenge URL
444454
\end{description}
445455

456+
The \verb|ivoa_x509| challenge exists in two forms:
457+
with and without the \verb|access_url|/\verb|standard_id| parameter pair.
458+
These optional parameters advise the client how to obtain a certificate
459+
for use within the domain of the challenge if it does not already have one.
446460

447-
A client in posession of a client certificate can use it to
448-
sign TLS (HTTPS) connections, and the service can examine the signature
449-
to authenticate the identity of the client.
461+
For either form of the challenge,
462+
if the client is in possession of a certificate
463+
signed by a CA it expects the service to trust, it may use it to
464+
sign requests to protected resources within the domain of the challenge.
450465

451-
To use this scheme, the client must present a username and password
466+
If the client does not hold any such certificate,
467+
and the \verb|access_url|/\verb|standard_id| pair is present,
468+
it may obtain one by presenting credentials
452469
to the endpoint given by the \verb|access_url| parameter,
453470
in the form defined by the \verb|standard_id| parameter.
454471
If authentication is successful, a 200 OK response must be returned
455472
whose body is an X.509 certificate chain including its private key,
456473
in PEM format. The \header{Content-Type} header of this response
457-
should be ``{\tt application/x-pem-file}''. \todo{should it?}
458-
Current implementations support only RSA encoding.
459-
\todo{I copied this from a code comment but I don't know what it means}
474+
should be ``{\tt application/x-pem-file}''.
460475
If authentication fails, a 401 or 403 response should be returned.
461476
Once in possession of the returned certificate,
462477
the client can use it to sign subsequent requests to protected resources.
478+
Certificates obtained in this way may not be usable in all X.509 contexts
479+
(i.e. may not be signed by a widely trusted CA),
480+
but should be usable within the domain of the current challenge.
463481

464482
Since client certificates achieve authentication by signing requests
465483
using public key cryptography, they cannot be stolen by third parties,
@@ -863,18 +881,18 @@ \subsection{Mandatory authentication with certificates}
863881
% https://ws-uv.canfar.net/youcat/capabilities,
864882
% whose certificate acquisition endpoint is at
865883
% https://ws.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/cred/generate.
866-
% But at time of writing it wasn't really working (no parameters in challenge)
867-
% and it uses optional, rather than mandatory, authentication.
884+
% However YouCat uses optional, rather than mandatory, authentication.
868885

869886
Probe the VOSI-capabilities endpoint of a TAP service to check
870887
for authentication modality (Section~\ref{sec:modalities}):
871888
{\footnotesize
872889
\begin{verbatim}
873890
% curl --head https://abc.example.net/tap/capabilities
874891
HTTP/1.1 401 Unauthorized
892+
www-authenticate: Bearer
893+
www-authenticate: ivoa_x509
875894
www-authenticate: ivoa_x509 standard_id="ivo://ivoa.net/sso#BasicAA",
876895
access_url="https://xyz.example.net/cert/generate"
877-
www-authenticate: Bearer
878896
\end{verbatim}
879897
}
880898

@@ -883,10 +901,16 @@ \subsection{Mandatory authentication with certificates}
883901
is required to access the service.
884902
The \verb|Bearer| challenge (\rfc{6750}) means we can authenticate with
885903
a Bearer Token if we have or know how to get one, but we don't.
886-
We can however use the \verb|ivoa_x509| challenge
887-
(Section~\ref{sec:ivoa-x509});
888-
it has a \verb|standard_id| of \verb|BasicAA| (Section~\ref{sec:standard-id})
889-
so transmit user credentials using
904+
The unparameterised \verb|ivoa_x509| challenge means
905+
the client can, in principle, authenticate with a certificate
906+
from any valid CA and not just one issued by the endpoint in the
907+
parameterised challenge.
908+
Without having such a certificate however we can use
909+
the parameterised \verb|ivoa_x509| challenge
910+
(Section~\ref{sec:ivoa-x509}) which advises one way to acquire
911+
a suitable certificate.
912+
It has a \verb|standard_id| of \verb|BasicAA| (Section~\ref{sec:standard-id})
913+
so we transmit user credentials using
890914
HTTP Basic Authentication to the \verb|access_url|:
891915

892916
{\footnotesize

0 commit comments

Comments
 (0)