Suggérer des modifications

Introduction

Ce tutoriel explique comment s’authentifier à TOSIAM depuis une application de type SPA (Single Page Application). Nous nous appuyons sur le framework Frontend Angular, ainsi que sur le protocole OIDC, implémenté par TOSIAM.

Prérequis:

  • Sur votre machine Windows 10/11 ou Linux, installer Tosiam QuickStart. Nous supposons le serveur TOSIAM démarré.
  • Récupérer le projet GITHUB Tosiam Samples. Nous appellerons le répertoire de travail local <TOSIAM_SAMPLES>
  • Installer une version récente de nodejs/npm
  • Installer une version récente d’Angular.

Pour info, ce tutoriel a été testé avec NodeJS version v20.17.0 et Angular 18.2.2

Installation.

Frontend Angular

Depuis le répertoire mini-angular/frontend, taper, sous windows ou sous linux:

npm install
npm run start

L’application Angular démarre et est accessible sous http://localhost:4200

connexion.png

Configuration TOSIAM.

Depuis le répertoire mini-angular/tosiam, taper:

  • Windows
  • Linux

export TOSIAM_HOME=<YOUR_INSTALL>
./configure.sh
set TOSIAM_HOME=<YOUR_INSTALL>
configure.bat

Test de l’application Angular.

Depuis l’écran de connexion de l’application angular, cliquer sur le bouton S’authentifier. Vous êtes redirigés vers la page d’authentification de TOSIAM.

login.png

Entrer:

  • Nom: dduck
  • Mot de passe: password

Vous arrivez sur la page de bienvenue de l’application. Notez la présence des informations de prénom et de nom de l’utilisateur.

bienvenue.png

Cliquer que le bouton Id Token: Vous voyez s’afficher le contenu de l’Id Token:

{
  "at_hash": "HsZH1itUUfUs8o14C7ooMA",
  "sub": "dduck",
  "auditTrackingId": "58aac098-bf63-4cc3-91af-f04fe7ee817f-231",
  "iss": "http://localhost:8080/tosiam/oauth2/ref",
  "tokenName": "id_token",
  "given_name": "Donald",
  "nonce": "cml5eWNGb210cjhlYWxjM1ZmczU5RFpqdGx3SmZ3T0tnY1pnT2RxVHpkMUda",
  "aud": "angular",
  "c_hash": "-Sk7U2BBdq4eNcWlQocy8w",
  "acr": "chaine",
  "org.forgerock.openidconnect.ops": "508a2c65-714d-48f0-9465-6f8f03dac586",
  "azp": "angular",
  "auth_time": 1726683837,
  "name": "Donald DUCK",
  "realm": "/ref",
  "exp": 1726687807,
  "tokenType": "JWTToken",
  "iat": 1726684207,
  "family_name": "DUCK",
  "email": "donald_duck@tosiam.io"
}

Analyse du code.

Le fichier de configuration ref-angular_oauth.properties

ref-angular_oauth.png

Le fichier de configuration angular_cors.properties

forgerock-am-cors-config-accepted-methods=GET
forgerock-am-cors-config-accepted-methods=POST
forgerock-am-cors-config-accepted-methods=OPTIONS
forgerock-am-cors-config-accepted-origins=http://localhost:4200
forgerock-am-cors-config-enable-cors=true
forgerock-am-cors-config-accepted-headers=content-type

Angular exécute du code Javascript en provenance du serveur: http://localhost:4200. TOSIAM doit être explicitement configuré pour accepter des requêtes depuis cette url. Il s’agit d’une configuration CORS.

Le fichier de configuration ref-OAuth2Provider.properties

Il s’agit du fichier qui configure le royaume ref en tant que serveur OAUTH2/OIDC

clientsCanSkipConsent=true
alwaysAddClaimsToToken=true
forgerock-oauth2-provider-loa-mapping=[chaine]=toto

Utiliser la librairie angular-oauth2-oidc

Le fichier TypeScript mini-angular/frontend/src/app/auth.service.ts contient la logique d’interaction entre Angular et TOSIAM. Voici le composant de configuration:

const authConfig: AuthConfig = {
  issuer: 'http://localhost:8080/tosiam/oauth2/ref', // Remplacez par l'URL de votre OpenAM
  redirectUri: window.location.origin,
  clientId: 'angular', // Remplacez par votre client_id
  responseType: 'code',
  scope: 'openid profile email',
  showDebugInformation: true,
  oidc: true,
  customQueryParams: {
    acr_values: 'chaine',
  }
}

Notez qu’aucun mot de passe n’est indiqué.

L’acr_value a la valeur chaine, comme indiqué dans le fichier de configuration TOSIAM ref-OAuth2Provider.properties