\subsection{Apache modules}

\begin{frame}[fragile]
  \frametitle{Apache modules}
  \begin{itemize}
  \item We make it easy to do authentication against MIT certificates.
  \item Both \texttt{https://scripts-cert.mit.edu}, and port
    \texttt{444} on any scripts hostname, are configured to request
    client certificates.
  \item \texttt{mod\_ssl} provides the
    \texttt{SSL\_CLIENT\_S\_DN\_Email} environment variable, but does
    not integrate with the Apache authentication and authorization
    framework.
  \item Wrote a collection of Apache modules to make this cleaner.
  \end{itemize}
\end{frame}

\begin{frame}[fragile]
  \frametitle{\texttt{mod\_auth\_sslcert}}
  \begin{itemize}
  \item \texttt{mod\_auth\_sslcert} passes the
    \texttt{SSL\_CLIENT\_S\_DN\_Email} variable to the Apache
    authorization handlers.
  \end{itemize}
\begin{semiverbatim}
AuthType SSLCert
AuthSSLCertVar SSL_CLIENT_S_DN_Email
AuthSSLCertStripSuffix "@MIT.EDU"
\end{semiverbatim}
\end{frame}

\begin{frame}[fragile]
  \frametitle{\texttt{mod\_authz\_afsgroup}}
  \begin{itemize}
  \item \texttt{mod\_authz\_afsgroup} does Apache authorization based
    on AFS groups.
  \end{itemize}
\begin{semiverbatim}
Require afsgroup system:scripts-team
\end{semiverbatim}
\end{frame}

\begin{frame}[fragile]
  \frametitle{\texttt{mod\_auth\_optional}}
  \begin{itemize}
  \item \texttt{mod\_auth\_optional} subverts the authorization
    process to allow you to serve different pages to users with
    certificates and users without certificates.
  \end{itemize}
\end{frame}
