Aller au contenu principal

OmniAUSF

OmniAUSF implémente la Fonction de Serveur d'Authentification (AUSF) du cœur 5G. Il orchestre l'authentification primaire entre l'AMF (via l'interface N12) et l'UDM (via l'interface N13), exécutant la méthode d'authentification 5G-AKA définie dans le TS 33.501. L'AUSF demande un vecteur d'authentification à l'UDM, retourne le défi RAND/AUTN (et un hachage de la réponse attendue) à l'AMF, vérifie la réponse produite par l'UE, dérive la clé d'ancrage K_SEAF pour le réseau de service, et enregistre le résultat d'authentification dans l'UDM.

Chaque échange d'authentification est suivi par un contexte d'authentification UE en mémoire, identifié par un authCtxId généré (UUID). Le contexte contient le matériel du vecteur (RAND, XRES*, HXRES*, K_AUSF, K_SEAF) pendant la durée de l'échange et est supprimé à la fin (succès ou échec), lors d'une désinscription explicite, ou lors d'un redémarrage du processus. De plus, un nettoyeur de contexte supervisé collecte périodiquement les contextes inactifs ou abandonnés une fois qu'ils dépassent un TTL configurable, de sorte qu'un contexte initié par l'AMF mais jamais confirmé ne reste pas indéfiniment. Les appels SBI sortants vers l'UDM ciblent un UDM découvert via le NRF (Nnrf_NFDiscovery), revenant à l'udm_uri statique uniquement lorsque la découverte ne donne rien ; l'AUSF s'enregistre également auprès du NRF et envoie des signaux de vie. OmniAUSF sert le service nausf-auth (nausf-auth/v1) et consomme le service nudm-ueau de l'UDM (nudm-ueau/v1).

Documentation

  • Operations - références 3GPP, interfaces et points de terminaison SBI, et les principales procédures d'authentification avec leurs diagrammes de séquence.
  • Configuration - référence complète de configuration avec des tableaux de paramètres, les points de terminaison de l'API de Gestion/OAM, et des notes de journalisation.
  • Metrics - métriques Prometheus exposées par l'AUSF et exemples de requêtes PromQL.
  • Troubleshooting - symptômes d'échec courants avec des remèdes.

Architecture Overview

Features Overview

  • Authentification primaire 5G-AKA (TS 33.501 6.1.3) de bout en bout : récupération de vecteur, relais de défi, vérification de réponse et rapport de résultat.
  • Dérivation de K_SEAF (TS 33.501 A.6) liée au nom du réseau de service, retournée à l'AMF lors de l'authentification réussie.
  • Calcul de HXRES* (TS 33.501 A.5) retourné à l'AMF dans la réponse d'initialisation.
  • Rapport de résultat d'authentification à l'UDM (auth-events) pour les succès et les échecs.
  • Gestion de la resynchronisation SQN : resynchronizationInfo (RAND + AUTS) est détecté, validé et relayé à l'UDM ; les entrées de resynchronisation malformées sont rejetées.
  • Suppression du contexte de sécurité UE - points de terminaison deregister et de suppression par contexte.
  • Décodage défensif de vecteur/réponse - les vecteurs UDM malformés et les resStar malformés sont traités comme des erreurs propres, jamais des plantages.
  • Enregistrement et signal de vie NRF.
  • OAM en temps réel - inspecter les sessions/statistiques, ajuster la configuration et le niveau de journalisation, et forcer la réinscription NRF via l'API de gestion HTTPS.
  • Métriques Prometheus pour les résultats d'authentification (y compris la resynchronisation SQN), l'état du NRF, et la santé de la VM BEAM. Le nombre de contextes en vol en direct est disponible via l'API OAM.

Quick Start

La configuration est lue à partir de la clé d'environnement de l'application :omniausf, peuplée à partir de config/runtime.exs. Chaque clé d'exécution est soutenue par une variable d'environnement OS lue au démarrage.

config :omniausf,
udm_uri: "http://127.0.0.12:7777",
sbi_scheme: "http",
sbi_addr: "127.0.0.19",
sbi_port: 7777,
nrf_uri: "http://127.0.0.1:7777",
mcc: "999",
mnc: "70",
prometheus_metrics_port: 9568,
heartbeat_interval: 10_000

config :logger, :default_formatter,
format: {OmniLogger.JsonFormatter, :format},
metadata: :all

La documentation complète des paramètres, y compris les types, les valeurs par défaut et les variables d'environnement, se trouve dans configuration.md.