kych

OAuth 2.0 API for Swiyu to enable Taler integration of Swiyu for KYC (experimental)
Log | Files | Refs

commit 244b7d3e7cad1a141d61b4539a8d7a4990eca4b0
parent a5f03845c5135e50efeee3b5909380748f0783fa
Author: Henrique Chan Carvalho Machado <henriqueccmachado@tecnico.ulisboa.pt>
Date:   Fri, 17 Oct 2025 18:09:41 +0200

verifier: added onboarding documentation

Diffstat:
Adocumentation/onboarding_verifier.pdf | 0
Adocumentation/onboarding_verifier.tex | 140+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 140 insertions(+), 0 deletions(-)

diff --git a/documentation/onboarding_verifier.pdf b/documentation/onboarding_verifier.pdf Binary files differ. diff --git a/documentation/onboarding_verifier.tex b/documentation/onboarding_verifier.tex @@ -0,0 +1,140 @@ +\documentclass{article} +\usepackage{hyperref} +\usepackage{enumitem} +\usepackage{listings} +\usepackage{xcolor} + +% Code listing settings +\lstset{ + basicstyle=\ttfamily\small, + breaklines=true, + frame=single, + backgroundcolor=\color{gray!10} +} + +\title{Onboarding the Swiyu Trust Infrastructure for a Generic Verifier} +\author{Henrique Machado} +\date{\today} + +\begin{document} +\maketitle + +\section{Introduction} + +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. + +Section \ref{Section 3} outlines all the steps necessary to onboard the swiyu trust infrastructure. + +\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. + +\section{Prerequisites} + +Before starting the onboarding process, ensure you have: + +\begin{itemize} + \item An AGOV or CH-Login account for accessing the ePortal. + \item Java Runtime Environment (JRE) 21 or higher installed. + \item Sufficient disk space (approximately 100 MB). + \item Internet connection. + \item Operating system: Linux x64/AArch64, macOS (AArch64), or Windows (x64). +\end{itemize} + +\section{Onboarding Process Overview}\label{Section 3} + +The onboarding process consists of the following steps: + +\begin{enumerate} + \item Sign-in or sign-up to the Swiss Confederacy ePortal. + \item Register as Business Partner. + \item Get API keys from the self-service portal. + \item Allocate DID space on the Swiyu Base Registry. + \item Generate cryptographic keys and DID log using the swiyu DID Toolbox. + \item Create and upload the DID log. + \item (Optional) Become a trusted participant. +\end{enumerate} + +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. + +\section{Configuring the Swiyu Generic Verifier} + +With the onboarding process complete, it is necessary to configure the Swiyu Generic Verifier with the generated keys and DID. + +\subsection{Locate the Configuration File} + +The Generic Verifier uses a YAML configuration file, located in + +\texttt{/swiyu-verifier/verifier-application/src/main/resources/application.yml}. + +\subsection{Understanding the Required Configuration Parameters} + +All required parameters can be found in the DID log generated by the DID toolbox. + +\begin{itemize} + \item \textbf{client\_id:} The DID found in the value of the \texttt{value.id} field. + + \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} + + \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. +\end{itemize} + +\subsection{Example Configuration} + +After replacing with your specific values, the \texttt{application.yaml} file will look similar to this: + +\begin{lstlisting}[language=yaml] +application: + signing-key: | + -----BEGIN EC PRIVATE KEY----- + MHcCAQEEIABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstu + oAoGCCqGSM49AwEHoUQDQgAE5cice+6ILYCD2gFEVFMLPt3HPf5n/Oef + zOOoP+3SLDAlh/YkKQvF/1xv0uYuvy1t6wpDM7au1dMEg2L1I9wDxE== + -----END EC PRIVATE KEY----- + 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" + external-url: "https://yourdomain.com" + client_id: "did:tdw:Qmd9bwsodZ1GAz4h8D7Vy6qRio78voXifDrnXokSTsMVQK:identifier-reg.trust-infra.swiyu-int.admin.ch:api:v1:did:18fa7c77-9dd1-4e20-a147-fb1bec146085" + client_id_scheme: "did" + client-metadata-file: "classpath:/client_metadata.json" +\end{lstlisting} + +To make sure the Generic Verifier uses your configuration, do not forget to specify this .yaml run profile when booting the server: + +\begin{lstlisting}[language=bash] +./mvnw spring-boot:run -pl verifier-application -Dspring-boot.run.profiles=application +\end{lstlisting} + +Where 'application' is the name of the configuration .yaml file. + +\section{HTTPS Configuration for Swiyu Wallet} + +\subsection{HTTPS Requirement} + +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. + +\subsection{Option 1: Public URL with Trusted Certificate} + +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: + +\begin{enumerate} + \item Install ngrok: \url{https://ngrok.com/download} + \item Start your Generic Verifier locally (e.g., on port 8080) + \item Create an ngrok tunnel: + \begin{lstlisting}[language=bash] +ngrok http 8080 + \end{lstlisting} + \item ngrok will provide a public HTTPS URL with a trusted certificate (e.g., \texttt{https://abc123.ngrok-free.app}) + \item Use this URL in the .yaml configuration file under the 'external-url' field. +\end{enumerate} + +\textbf{Note:} ngrok free tier URLs can change with each session. + +\subsection{Option 2: Local Network with Valid Certificate} + +A more cumbersome approach, if running the verifier on the same network as the Swiyu wallet: + +\begin{enumerate} + \item Obtain a valid TLS/SSL certificate (e.g. from a trusted Certificate Authority). + \item Configure the Generic Verifier application to use the certificate. +\end{enumerate} + +\end{document} +