La bibliothèque kiji intégrée à SmartHR, un service logiciel de cloud pour le personnel et la main-d'œuvre, est un OSS créé dans Ruby, et tout le monde peut l'obtenir, le modifier et le redistribuer. SmartHR kiji
Dans cet article, nous allons essayer de générer un xml signé en utilisant la bibliothèque kiji (ci-après, kiji) et de l'envoyer au système d'application électronique e-Gov (ci-après, e-Gov) avec la commande curl. Puisque nous déplaçons e-Gov de manière interactive, nous pensons que nous pouvons comprendre en profondeur les spécifications d'e-Gov. De plus, nous définirons les problèmes d'e-Gov et envisagerons la possibilité d'une amélioration du portail mineur. Il convient de noter que l'e-Gov qui a été confirmé pour fonctionner ici est un environnement de vérification ouvert aux développeurs de logiciels.
Cette fois, nous présenterons les spécifications e-Gov comme la première des quatre fois. La deuxième fois est le matériel public e-Gov, la troisième fois est la construction de l'environnement d'exécution et la quatrième fois est la confirmation de la machine réelle.
L'environnement d'exploitation est windows10, ruby 2.6.5p114 (révision 67812 du 01/10/2019) [x64-mingw32], curl 7.58.0 (x86_64-pc-win32) libcurl / 7.58.0 WinSSL zlib / 12.11.
Les lecteurs suivants sont supposés.
--Les personnes souhaitant comprendre les spécifications d'e-Gov pour développer des services logiciels
L'application électronique vous permet d'effectuer des procédures administratives telles que des demandes papier et des notifications depuis votre ordinateur personnel ou professionnel via Internet. e-Gov publie les spécifications d'une API de liaison externe pour la réalisation d'applications électroniques pour diverses procédures administratives sous la juridiction de chaque ministère et agence pour les services logiciels développés par les développeurs de logiciels.
e-Gov traite les demandes de procédures selon le flux de ① à ④. Parmi celles-ci, les spécifications API pour (1) et (4) sont sujettes à publication. ① L'utilisateur envoie les données d'application créées à e-Gov et reçoit une confirmation d'arrivée. ② e-Gov envoie les données de candidature complétées au ministère compétent. ③ Le ministère responsable de la procédure examine les données de la demande et enregistre le résultat dans e-Gov. ④ L'utilisateur s'adresse à e-Gov et confirme les résultats de l'examen et les données des documents officiels.
L'API de liaison externe e-Gov peut être classée en trois grandes catégories: (1) API d'enregistrement de l'ID utilisateur, (2) API d'authentification utilisateur et (3) diverses API de traitement d'application électronique. Dans les services logiciels, vous pouvez poursuivre la procédure de candidature souhaitée en appelant ces API de liaison externes en combinaison.
L'API de liaison externe e-Gov est illustrée ci-dessous. Pour certaines API, vérifiez l'opération avec la commande curl dans la vérification de la machine réelle.
NO | e-API de liaison externe Gov | Contenu | Confirmation réelle de la machine |
---|---|---|---|
1 | Enregistrement de l'ID utilisateur | e-Enregistrer l'ID utilisateur dans Gov | - |
2 | Authentification d'utilisateur | e-Authentifier les utilisateurs avec Gov | 〇 |
3 | Application en vrac | 複数手続をまとめてApplication en vracする(各手続毎に到達番号が割り振られる) | 〇 |
4 | Obtenir des informations sur la liste | Obtenez une liste des éléments soumis | 〇 |
5 | Acquisition des informations de la liste des candidatures | Obtenez une liste d'applications | - |
6 | Demande de statut | Renseignez-vous sur le statut de l'application du numéro d'arrivée spécifié | 〇 |
7 | Retrait | Retirer la demande du numéro d'arrivée spécifié | - |
8 | Obtenez la liste des notifications de correction | Obtenez une liste de notifications de correction | - |
9 | Modification (nouvelle soumission) | Soumettez à nouveau la demande pour le numéro d'arrivée spécifié | - |
10 | Correction (correction partielle) | Une correction partielle est effectuée pour l'application pour le numéro d'arrivée spécifié | - |
11 | Modification (demande de modification) | Demander une modification de la demande du numéro d'arrivée spécifié (uniquement pour les procédures relevant de la compétence du ministère de la Santé, du Travail et des Affaires sociales) | - |
12 | Obtenez une liste de documents officiels et de commentaires | Obtenez une liste des documents officiels et des commentaires pour l'application avec le numéro d'arrivée spécifié | 〇 |
13 | Obtention de documents officiels | Renvoyer les documents officiels de la demande avec le numéro d'arrivée spécifié au format ZIP | 〇 |
14 | Acquisition des documents officiels terminée | e-Govに対してAcquisition des documents officiels terminéeを通知する | - |
15 | Vérification de la signature des documents officiels | Obtenez le certificat officiel et la signature officielle des documents officiels | - |
16 | Recevoir une notification de commentaire | Recevez une notification de commentaire pour l'application avec le numéro d'arrivée spécifié | - |
17 | Acquisition de notification de commentaire terminée | e-Govに対してAcquisition de notification de commentaire terminéeを通知する | - |
18 | Obtention d'une liste des institutions financières prenant en charge le paiement électronique | Obtenez une liste des institutions financières qui peuvent payer l'argent du Trésor national par voie électronique | - |
19 | Obtenir la liste des informations de paiement | Acquérir des informations de paiement telles que les frais émis au numéro d'arrivée spécifié | - |
20 | Affichage du site de l'institution financière de paiement électronique | Transition vers la banque en ligne des institutions financières | - |
21 | Ajouter des informations d'identification de certificat | e-Ajouter une identité de certificat à Gov | - |
22 | Mise à jour des informations d'identification du certificat | e-Mettre à jour les informations d'identification du certificat gérées par Gov | - |
23 | Supprimer les informations d'identification du certificat | e-Supprimer les informations d'identification du certificat gérées par le gouvernement | - |
L'ID utilisateur est un ID qui identifie de manière unique l'utilisateur qui crée une application électronique à l'aide du service logiciel. Dans e-Gov, l'ID utilisateur n'est enregistré qu'une seule fois pour chaque utilisateur.
Le service logiciel envoie à e-Gov le XML avec l'ID utilisateur signé avec la clé privée. e-Gov vérifie la signature XML et enregistre l'ID utilisateur et les informations d'identification du certificat de clé publique en association les uns avec les autres.
Dans e-Gov, l'authentification de l'utilisateur est effectuée avant d'exécuter diverses API de traitement d'application électronique.
Le service logiciel envoie le XML avec l'ID utilisateur signé avec la clé privée à e-Gov. e-Gov émettra une clé d'accès s'il n'y a pas de problème après avoir confirmé que l'ID utilisateur a été enregistré dans le système et la correspondance entre l'ID utilisateur et les informations d'identification du certificat.
Désormais, dans les services logiciels, il est nécessaire de définir la clé d'accès dans la partie d'en-tête HTTP lors de l'appel de diverses API de traitement d'application électronique. La clé d'accès a une période valide, et si la clé d'accès expire après la période de validité, l'accès à diverses API ne sera pas autorisé. Dans ce cas, vous devez à nouveau authentifier l'utilisateur et obtenir une nouvelle clé d'accès.
Lors de l'examen d'un scénario dans lequel un utilisateur procède à une procédure de candidature électronique à l'aide d'un service logiciel, il peut être grossièrement divisé en cinq en combinant des API associées.
Tout d'abord, l'utilisateur effectue une demande d'état à partir de l'application batch. Après cela, la demande sera retirée ou modifiée si nécessaire en fonction du résultat de la demande de statut. De plus, nous allons acquérir les documents officiels et les commentaires émis au fur et à mesure de l'avancement de l'examen de la procédure. À un moment différent de ce qui précède, l'utilisateur acquiert une liste d'institutions financières qui peuvent utiliser le paiement électronique et une liste d'informations de paiement si nécessaire, et conserve les informations d'identification du certificat enregistrées dans e-Gov.
Le contenu ci-dessus est résumé.
NO | scénario | API de traitement électronique des demandes |
---|---|---|
1 | De l'application par lots à la demande de statut | Application en vrac Obtenir des informations sur la liste Acquisition des informations de la liste des candidatures Demande de statut |
2 | Retrait de la demande ou mise en œuvre de la modification | Retrait Modification (nouvelle soumission, modification partielle, demande de modification) |
3 | Acquisition de documents officiels et commentaires | Obtenez une liste de documents officiels et de commentaires Obtention de documents officiels Vérification de la signature des documents officiels Obtention de documents officiels完了 Recevoir une notification de commentaire Recevoir une notification de commentaire完了 |
4 | Liste des institutions financières qui peuvent utiliser le paiement électronique et Acquisition de la liste des informations de paiement |
Obtention d'une liste des institutions financières qui peuvent utiliser le paiement électronique Obtenir la liste des informations de paiement |
5 | Maintenance des informations d'identification du certificat | Ajouter des informations d'identification de certificat Mise à jour des informations d'identification du certificat Supprimer les informations d'identification du certificat |
Les services logiciels doivent prendre les mesures de sécurité des informations suivantes afin d'utiliser l'API de liaison externe e-Gov.
Les détails sont décrits dans «Spécifications des demandes de sécurité des informations de l'API de liaison externe».
Organisez l'interface de connexion externe e-Gov du point de vue de l'entrée et de la sortie.
Classification | Contenu |
---|---|
contribution | Paramètres URI (version API, numéro de transmission, période de transmission, numéro d'arrivée, etc.) En-tête HTTP (clé d'accès, ID logiciel, ID d'authentification de base et mot de passe) Corps de la requête HTTP (spécifiez les données d'application, etc. uniquement au moment de la commande POST) |
production | Code de réponse HTTP (normal, lorsqu'une erreur se produit) Corps de la réponse HTTP (résultat de la réponse XML) |
Ici, après avoir organisé les données d'entrée / sortie, nous expliquerons en détail les données d'application et le xml signé.
Étant donné que le service logiciel utilise l'API de liaison externe e-Gov, il accède à l'URI de requête spécifié pour chaque API. Lors de l'accès à l'URI de la demande, spécifiez la clé d'accès et l'ID du logiciel dans l'en-tête HTTP. En outre, spécifiez l'ID d'authentification de base et le mot de passe ensemble uniquement dans l'environnement de vérification.
Lorsque vous accédez à l'URI de la requête avec la commande POST, vous pouvez demander la procédure de candidature à e-Gov en spécifiant les données de l'application, etc. dans la partie corps de la requête et en l'envoyant. Les données d'application sont la conversion de l'ensemble de données d'application dans un format qui peut être accepté par e-Gov. De plus, lors de l'accès à l'URI de la demande avec la commande GET, diverses informations peuvent être obtenues auprès d'e-Gov en spécifiant les informations requises dans le paramètre URI.
L'API d'application électronique e-Gov qui utilise la commande POST est résumée. Pour ces API, spécifiez l'une des (1) données d'application, (2) du xml signé et (3) des autres dans la partie corps de la requête.
NO | API de traitement électronique des demandes | Application Data | Xml signé | Autre |
---|---|---|---|---|
1 | Enregistrement de l'ID utilisateur | × | 〇 | × |
2 | Authentification d'utilisateur | × | 〇 | × |
3 | Application en vrac | 〇 | × | × |
4 | Retrait | 〇 | × | × |
5 | Modification (nouvelle soumission) | 〇 | × | × |
6 | Correction (correction partielle) | 〇 | × | × |
7 | Modification (demande de modification) | 〇 | × | × |
8 | Vérification de la signature des documents officiels | × | × | 〇 |
9 | Affichage du site de l'institution financière de paiement électronique | × | × | 〇 |
10 | Ajouter des informations d'identification de certificat | × | 〇 | × |
11 | Mise à jour des informations d'identification du certificat | × | 〇 | × |
12 | Supprimer les informations d'identification du certificat | × | 〇 | × |
e-Gov renvoie une réponse à une demande de service logiciel. La réponse comprend le code de réponse et le corps de la réponse (résultat de la réponse XML). Le service logiciel effectue un traitement ultérieur en fonction de la réponse de chaque API.
La balise \
L '"ensemble de données d'application" est un ensemble de données composé de XML de gestion de configuration, de formulaire de demande XML et de fichiers joints, et est utilisé pour une application par lots, une demande de retrait et une demande de modification.
Dans le service logiciel, e-Gov signe le XML de gestion de configuration afin de confirmer l'authenticité de l'expéditeur et si les données transmises ont été falsifiées ou non. En outre, l'ensemble de données d'application contenant le XML de gestion de la configuration signé (xml signé) est converti en fichier zip et encodé au format Base64.
"Données d'application" est le résultat de l'encodage du fichier zip au format Base64 et stocké dans la balise \
Ensuite, nous expliquerons le XML de gestion de la configuration, le XML du formulaire de candidature et les fichiers joints.
En tant qu'unité logique qui stocke les informations d'attribut de l'ensemble des données d'application, les informations d'application qui ne sont pas incluses dans le XML d'application et la relation entre les unités logiques de l'ensemble des données sont gérées.
Le fichier physique d'informations de gestion de configuration est appelé «XML de gestion de configuration», et à l'exception des demandes de retrait, il est toujours inclus dans l'ensemble de données d'application.
La structure du XML de gestion de la configuration est définie pour chaque application d'application par lots, demande de retrait, demande de retrait et modification. De plus, dans le format de signature de fichier individuel décrit plus loin, la structure de balise des informations de configuration est définie pour le XML de gestion de la configuration pour le formulaire de demande XML, le XML de gestion de la configuration pour la modification et le XML de gestion de la configuration pour les documents joints.
Il s'agit d'un formulaire pour remplir les éléments de demande / notification dans chaque procédure administrative. Dans e-Gov, le format XML qui stocke les éléments de demande / notification est appelé «formulaire de demande», et son fichier physique est appelé «formulaire de demande XML».
Il s'agit d'un document joint qui doit être soumis avec le formulaire de candidature en fonction des éléments de candidature / notification dans chaque procédure administrative. Dans e-Gov, les autres documents qui ne sont pas stockés dans le formulaire de candidature sont appelés «documents joints» et leurs fichiers physiques sont appelés «fichiers joints».
Dans e-Gov, le certificat électronique (clé publique) utilisé pour chaque ID utilisateur est utilisé pour chaque ID utilisateur afin de confirmer l'identité et de détecter si le document a été falsifié sur la base de l'infrastructure à clé publique (PKI). Il est géré en l'associant à l'ID. Par conséquent, dans le service logiciel, il est nécessaire de créer un xml signé pour les données d'application à l'aide de la clé privée correspondant au certificat numérique géré pour chaque ID utilisateur.
Un xml signé est un fichier xml avec des informations de signature électronique ajoutées. Pour les signatures xml, la recommandation du W3C (https://www.w3.org/TR/xmldsig-core/) spécifie la syntaxe XML pour les signatures numériques.
Les informations de signature électronique sont (1) des informations sur l'algorithme utilisé pour le calcul de la valeur de signature et le calcul du condensé, (2) la valeur de hachage pour confirmer la falsification du document, (3) la signature électronique pour la valeur de hachage, et (4) le certificat électronique (clé publique). Le format des informations de signature électronique est le suivant.
La description de chaque élément de balise de signe xml est réimprimée à partir de Wiki. e-Gov suit également ce contenu.
--L'élément SignedInfo spécifie ce qu'il faut signer et l'algorithme à utiliser. Les éléments SignatureMethod et CanonicalizationMethod sont utilisés par l'élément SignatureValue et sont inclus dans SignedInfo pour les protéger contre la falsification.
Il existe deux types de xml signé e-Gov: le xml signé inclus dans l'ensemble de données d'application et le xml signé spécifié directement dans la partie du corps HTTP. Le premier est utilisé pour l'API d'application par lots, etc., et le dernier est utilisé pour l'API d'enregistrement / d'authentification des utilisateurs, etc.
Lors de l'attribution d'une signature au XML de gestion de la configuration inclus dans l'ensemble de données d'application, (1) «format standard» qui attribue une signature à l'ensemble des données d'application, et (2) «format de signature de fichier individuel» qui attribue une signature à chaque formulaire de demande et fichier joint. Il existe deux types.
Le format des informations de signature électronique est décrit dans "e-Gov Electronic Application System External Linkage API Application Data Specification Common Data Specification".
Les données d'application au format standard sont un ensemble de données composé des trois fichiers suivants.
Ces fichiers ont les relations suivantes:
Dans le service logiciel, les données d'application sont créées par signature selon la procédure suivante. (1) Calcul de la valeur de hachage à partir des informations de gestion de configuration du XML de gestion de configuration ② Calculez la valeur de hachage à partir du XML de l'application ③ Calculez la valeur de hachage à partir des documents joints ④ Signez toute la valeur de hachage avec la clé privée ⑤ Donner les informations de certificat (clé publique) correspondant à la clé privée ⑥ Consolidez l'ensemble de données au format zip et encodez-le au format Base64 ⑦ Stocker dans les données d'application
À partir des données de candidature reçues, e-Gov vérifiera l'identité et si les données ont été falsifiées ou non par la procédure suivante. (1) Extraire le résultat de l'encodage au format Base64 de l'ensemble de données à partir des données d'application (2) Décoder au format Base64 et convertir en ensemble de données au format zip ③ Décompressez le zip et obtenez le XML de gestion de la configuration (4) Comparez le certificat de gestion de configuration XML avec le certificat géré par e-Gov pour confirmer l'authenticité de l'expéditeur. ⑤ Décryptez la valeur de signature avec le certificat (clé publique) et extrayez la valeur de hachage ⑤ Calculez les valeurs de hachage pour le XML de gestion de la configuration, le XML d'application et les fichiers joints. ⑥ Comparez les valeurs de hachage et si elles correspondent, déterminez qu'il n'y a pas de falsification des données.
Les procédures d'application pour le format standard sont les suivantes.
Les données d'application dans le format de signature de fichier individuel sont un ensemble de données composé des 5 fichiers suivants.
Ces fichiers ont les relations suivantes:
La valeur de hachage calculée à partir du formulaire de candidature XML est signée et la valeur de signature est ajoutée aux informations de configuration XML du formulaire de candidature. En outre, la valeur de hachage calculée à partir du document joint est signée et la valeur de signature est ajoutée aux informations de configuration XML pour le document joint. Contrairement au format standard, il n'y a pas de valeur de signature dans le XML de gestion de la configuration.
Dans le service logiciel, les données d'application sont créées par signature selon la procédure suivante.
(1) Calcul de la valeur de hachage à partir des informations de gestion de configuration des informations de configuration XML pour le formulaire de candidature ② Calculez la valeur de hachage à partir du XML de l'application ③ Créez une valeur de signature avec une clé privée à partir de chaque valeur de hachage ④ Donner les informations de certificat (clé publique) correspondant à la clé privée ⑤ Informations de configuration pour les documents joints Calculez la valeur de hachage à partir des informations de gestion de configuration de XML ⑥ Calculez la valeur de hachage à partir du fichier joint ⑦ Créez une valeur de signature avec une clé privée à partir de chaque valeur de hachage ⑧ Donner les informations de certificat (clé publique) correspondant à la clé privée ⑨ Consolidez l'ensemble de données au format zip et encodez-le au format Base64 ⑩ Stocker dans les données d'application
e-Gov vérifie la vérification d'identité et la présence ou l'absence de falsification de données à partir des données d'application reçues dans la procédure inverse.
La procédure d'application pour le format de signature de fichier individuel est la suivante. Le "type d'écriture continue" est un format qui peut décrire plusieurs noms.
Pour les API liées à l'enregistrement de l'ID utilisateur, à l'authentification de l'utilisateur et à l'ajout / la mise à jour / la suppression des informations d'identification du certificat, spécifiez directement le xml signé dans la partie du corps HTTP.
Le format des informations de signature électronique est décrit dans "Spécifications de l'API de liaison externe du système d'application électronique e-Gov (version 1)".
Ces fichiers XML signés ont en commun de calculer la valeur de hachage pour la balise \
Pour l'enregistrement de l'ID utilisateur et l'authentification de l'utilisateur, ne spécifiez pas le certificat de clé publique dans la balise \
Dans e-Gov, l'état est géré en le divisant en un état principal et un sous-état en fonction de la progression du traitement des demandes.
Pour chaque procédure, l'état change dans l'ordre de (traitement) → (atteint) → (en cours de révision) → (révision terminée) → (procédure terminée) en fonction de l'avancement.
Chaque état a les significations suivantes:
Nom d'état | Contenu |
---|---|
En traitement | Divers contrôles sont en cours sur les données de l'application |
Atteindre | Les données d'application ont été acceptées normalement |
À l'étude | État dans lequel le ministère examine les données de la demande |
Examen terminé | État où l'examen des données de la demande a été achevé |
Fin de procédure | La procédure pour les données de candidature est terminée |
--e-Gov effectue diverses vérifications sur les données de l'application. Diverses vérifications sont la vérification de la configuration des fichiers, la vérification du schéma XML, la vérification de la cohérence et la vérification du format. S'il n'y a pas de problème, il passera de (en cours) à (atteint). ――Lorsque l'examen du ministère commence, il passera de (atteint) à (en cours d'examen). ――Lorsque l'examen du ministère est terminé, il passera de (en cours d'examen) à (fin de l'examen).
Lorsque le logiciel demande à e-Gov de retirer la procédure en (atteint) ou (en cours de révision), le sous-état passe de (aucun) à (en cours de révision), et enfin l'état principal (procédure terminée) + sous-état. (Retiré).
Si une instruction de modification est émise aux données de la demande par le ministère ayant compétence sur la procédure pendant (en cours d'examen), le (sous-état) passera de (aucun) à (en attente du traitement de la modification). En fonction du contenu de l'instruction de correction, le service logiciel doit isoler la séquence suivante comme suit:
Si le type de modification est "resoumettre" et que le service logiciel demande un amendement (nouvelle soumission), il s'agira de l'état principal (procédure terminée) + sous-état (resoumis). Lorsque le type de correction est «correction partielle», lorsque le service logiciel demande une correction (correction partielle), il devient un sous-état (aucun).
Ce qui précède est exprimé dans le diagramme de transition d'état.
Recommended Posts