onboarding_verifier.tex (5934B)
1 \documentclass{article} 2 \usepackage{hyperref} 3 \usepackage{enumitem} 4 \usepackage{listings} 5 \usepackage{xcolor} 6 7 % Code listing settings 8 \lstset{ 9 basicstyle=\ttfamily\small, 10 breaklines=true, 11 frame=single, 12 backgroundcolor=\color{gray!10} 13 } 14 15 \title{Onboarding the Swiyu Trust Infrastructure for a Generic Verifier} 16 \author{Henrique Machado} 17 \date{\today} 18 19 \begin{document} 20 \maketitle 21 22 \section{Introduction} 23 24 Before being able to act as an issuer or verifier in the swiyu ecosystem, you will need to onboard onto the base registry and optionally register on the trust registry. 25 26 Section \ref{Section 3} outlines all the steps necessary to onboard the swiyu trust infrastructure. 27 28 \textbf{Important:} Please note that the current system is in Public Beta and is provided on a best-effort basis. The system will continue to evolve over time. 29 30 \section{Prerequisites} 31 32 Before starting the onboarding process, ensure you have: 33 34 \begin{itemize} 35 \item An AGOV or CH-Login account for accessing the ePortal. 36 \item Java Runtime Environment (JRE) 21 or higher installed. 37 \item Sufficient disk space (approximately 100 MB). 38 \item Internet connection. 39 \item Operating system: Linux x64/AArch64, macOS (AArch64), or Windows (x64). 40 \end{itemize} 41 42 \section{Onboarding Process Overview}\label{Section 3} 43 44 The onboarding process consists of the following steps: 45 46 \begin{enumerate} 47 \item Sign-in or sign-up to the Swiss Confederacy ePortal. 48 \item Register as Business Partner. 49 \item Get API keys from the self-service portal. 50 \item Allocate DID space on the Swiyu Base Registry. 51 \item Generate cryptographic keys and DID log using the swiyu DID Toolbox. 52 \item Create and upload the DID log. 53 \item (Optional) Become a trusted participant. 54 \end{enumerate} 55 56 The official swiyu technical documentation offers detailed guides ---\href{https://swiyu-admin-ch.github.io/cookbooks/}{cookbooks}--- that guide you through this process in a detailed manner. Follow \href{https://swiyu-admin-ch.github.io/cookbooks/onboarding-base-and-trust-registry/}{this cookbook} to complete the necessary steps for a successful onboarding process. 57 58 \section{Configuring the Swiyu Generic Verifier} 59 60 With the onboarding process complete, it is necessary to configure the Swiyu Generic Verifier with the generated keys and DID. 61 62 \subsection{Locate the Configuration File} 63 64 The Generic Verifier uses a YAML configuration file, located in 65 66 \texttt{/swiyu-verifier/verifier-application/src/main/resources/application.yml}. 67 68 \subsection{Understanding the Required Configuration Parameters} 69 70 All required parameters can be found in the DID log generated by the DID toolbox. 71 72 \begin{itemize} 73 \item \textbf{client\_id:} The DID found in the value of the \texttt{value.id} field. 74 75 \item \textbf{signing-key-verification-method:} Your DID with the authentication key reference appended. Its value is found in the \texttt{value.assertionMethod} entry in the DID log. The format is: \texttt{<your-did>\#auth-key-01} 76 77 \item \textbf{signing-key:} The private EC authentication key from the file \texttt{.didtoolbox/auth-key-01}. Copy the entire content including the BEGIN and END markers. 78 \end{itemize} 79 80 \subsection{Example Configuration} 81 82 After replacing with your specific values, the \texttt{application.yaml} file will look similar to this: 83 84 \begin{lstlisting}[language=yaml] 85 application: 86 signing-key: | 87 -----BEGIN EC PRIVATE KEY----- 88 MHcCAQEEIABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstu 89 oAoGCCqGSM49AwEHoUQDQgAE5cice+6ILYCD2gFEVFMLPt3HPf5n/Oef 90 zOOoP+3SLDAlh/YkKQvF/1xv0uYuvy1t6wpDM7au1dMEg2L1I9wDxE== 91 -----END EC PRIVATE KEY----- 92 signing-key-verification-method: "did:tdw:Qmd9bwsodZ1GAz4h8D7Vy6qRio78voXifDrnXokSTsMVQK:identifier-reg.trust-infra.swiyu-int.admin.ch:api:v1:did:18fa7c77-9dd1-4e20-a147-fb1bec146085#auth-key-01" 93 external-url: "https://yourdomain.com" 94 client_id: "did:tdw:Qmd9bwsodZ1GAz4h8D7Vy6qRio78voXifDrnXokSTsMVQK:identifier-reg.trust-infra.swiyu-int.admin.ch:api:v1:did:18fa7c77-9dd1-4e20-a147-fb1bec146085" 95 client_id_scheme: "did" 96 client-metadata-file: "classpath:/client_metadata.json" 97 \end{lstlisting} 98 99 To make sure the Generic Verifier uses your configuration, do not forget to specify this .yaml run profile when booting the server: 100 101 \begin{lstlisting}[language=bash] 102 ./mvnw spring-boot:run -pl verifier-application -Dspring-boot.run.profiles=application 103 \end{lstlisting} 104 105 Where 'application' is the name of the configuration .yaml file. 106 107 \section{HTTPS Configuration for Swiyu Wallet} 108 109 \subsection{HTTPS Requirement} 110 111 The Swiyu wallet \textbf{only accepts HTTPS connections}. To verify BetaID credentials, you must use a valid TLS/SSL certificate and ensure your verifier is accessible via HTTPS. 112 113 \subsection{Option 1: Public URL with Trusted Certificate} 114 115 For easier setup, especially during development and testing, you can use a tunneling service like ngrok to forward a public HTTPS URL to your local verifier: 116 117 \begin{enumerate} 118 \item Install ngrok: \url{https://ngrok.com/download} 119 \item Start your Generic Verifier locally (e.g., on port 8080) 120 \item Create an ngrok tunnel: 121 \begin{lstlisting}[language=bash] 122 ngrok http 8080 123 \end{lstlisting} 124 \item ngrok will provide a public HTTPS URL with a trusted certificate (e.g., \texttt{https://abc123.ngrok-free.app}) 125 \item Use this URL in the .yaml configuration file under the 'external-url' field. 126 \end{enumerate} 127 128 \textbf{Note:} ngrok free tier URLs can change with each session. 129 130 \subsection{Option 2: Local Network with Valid Certificate} 131 132 A more cumbersome approach, if running the verifier on the same network as the Swiyu wallet: 133 134 \begin{enumerate} 135 \item Obtain a valid TLS/SSL certificate (e.g. from a trusted Certificate Authority). 136 \item Configure the Generic Verifier application to use the certificate. 137 \end{enumerate} 138 139 \end{document} 140