kiji ist eine in SmartHR integrierte Bibliothek, die auf GitHub veröffentlicht wird. Diese Bibliothek ist ein in Ruby erstelltes OSS und kann von jedem bezogen, geändert und weitergegeben werden. SmartHR kiji
Hier entwickeln wir einen Treiber, der kiji aufruft, um eine signierte XML zu generieren.
Laden Sie kiji von GitHub herunter. Die Ordnerstruktur ist wie folgt.
kiji-Hauptordnerstruktur
kiji-master/
├ bin/
├ lib/ #Komplette Entwicklungsquelle
│ └ kiji/
└ spec/ #Komplette Testumgebung
Es gibt eine Reihe von Entwicklungsquellen in lib direkt unter kiji-master und eine Reihe von Testumgebungen in spec. Sie können die Versionen anderer Gem-Pakete überprüfen, von denen Kiji abhängt, indem Sie die Datei kiji.gemspec direkt unter kiji-master überprüfen.
Wie ich später erklären werde, habe ich Kiji in meiner lokalen Umgebung erstellt, da ich einige der Entwicklungsquellen ändern musste. Da die Dateiliste von GitHub aus den spec.files von kiji.gemspec abgerufen werden sollte, wurde sie so geändert, dass sie aus dem lokalen Ordner abgerufen werden kann.
Die Entwicklungsquelle in lib ist unten gezeigt.
lib Ordnerstruktur
lib/
├ kiji.rb
└ kiji/
├ access.rb
├ api.rb
├ authentication.rb
├ client.rb
├ digester.rb
├ signer.rb
├ version.rb
└ zipper.rb
Wenn Sie kiji.rb überprüfen, können Sie sehen, dass die Anwendung version.rb, client.rb und zipper.rb direkt auffüllt.
kiji.rb
require 'kiji/version.rb'
require 'kiji/client.rb'
require 'kiji/zipper.rb'
Kiji besteht aus 4 Klassen und 2 Modulen.
Struktur von Kiji
module kiji
├ class Zipper #Zum Zip-Datei härten
├ class Client # e-An die externe Linkage-API von Gov senden
├ class Signer #Erstellen Sie eine signierte XML
├ class Digester #Erstellung digitaler Signaturen
├ module Authentication #Dienstprogramme zur Authentifizierung
└ module Access # e-Regierungsbezogene Versorgungsunternehmen
In der Hierarchie der vier Klassen stehen die Klassen Zipper und Client an der Spitze, gefolgt von den Klassen Signer und Digester. Wenn Sie es in ein Klassendiagramm schreiben, sieht es wie folgt aus.
Um e-Gov elektronisch zu beantragen, gehen Sie wie folgt vor.
① Erstellen Sie eine signierte XML (2) Konsolidieren Sie signierte XML-Dateien, angehängte Dateien usw. in einer Zip-Datei ③ Codieren Sie die Zip-Datei in das Base64-Format und speichern Sie sie in den Übertragungsdaten ④ Senden nach Einstellung ③ im http-Anforderungshauptteil der externen Verknüpfungs-API von e-Gov
Die Klasse Zipper hat die Funktionen von ①② und die Klasse Client hat die Funktionen von ③④.
Dieses Mal habe ich beschlossen, die Klasse Zipper zu verwenden, um ①② auszuführen, und den Befehl curl zu verwenden, um sie an e-Gov zu senden. Hiermit überprüfen Sie den Inhalt der signierten XML-Datei und die Antwort von e-Gov.
In zipper.rb gab es bei der Berechnung des Hashwerts des Antragsformulars ein Problem beim Lesen der zu signierenden XML, und der Code wurde korrigiert.
Im ursprünglichen Code "app_doc = File.read (app_file_path)" wird xml im Textmodus gelesen, sodass der Fensterzeilen-Feedcode "\ r \ n" intern automatisch durch "\ n" ersetzt wird. Ich habe den Hash-Wert für das Ergebnis berechnet. Daher wurde es so geändert, dass es im Binärmodus liest, ohne den Zeilenvorschubcode zu ersetzen.
zipper.rb
#Suchen Sie den Hashwert des Antragsformulars
app_file_paths.each do |app_file_path|
- app_doc = File.read(app_file_path)
+ f = File.open(app_file_path, "rb")
+ app_doc = f.read
app_file_name = File.basename(app_file_path)
signer.digest_file!(app_doc, id: app_file_name)
end
Dies führte zur Schaffung eines lokalen Edelsteins. Nachdem ich die Spezifikationsdateien von kiji.gemspec in ein lokales Ziel geändert hatte, erstellte ich kiji und installierte es in der lokalen Umgebung.
Kiji bauen
\kiji-master>rake build
kiji 0.2.2 built to pkg/kiji-0.2.2.gem.
\kiji-master>dir pkg
2020/08/21 11:42 <DIR> .
2020/08/21 11:42 <DIR> ..
2020/08/16 20:54 13,312 kiji-0.2.2.gem
\kiji-master>gem install pkg\kiji-0.2.2.gem
Successfully installed kiji-0.2.2
Parsing documentation for kiji-0.2.2
Installing ri documentation for kiji-0.2.2
Done installing documentation for kiji after 0 seconds
1 gem installed
Bereiten Sie die Testdaten vor, die für eine Stapelanwendung erforderlich sind. Die Testdaten umfassen das Standardformat und das individuelle Dateisignaturformat. Zu diesem Zeitpunkt sind die öffentlichen Materialien, auf die Bezug genommen wird, die Materialien, die sich auf das Testverfahren für die Verifizierungsumgebung beziehen. Die folgenden Informationen sind im öffentlichen Dokument "Liste der Verfahren für API-Tests" enthalten.
Liste der API-Testverfahren
Verfahrensinformationen
├ Prozedurkennung
├Verfahrenname (Name, der im "Prozedurnamen-Tag" des Konfigurationsverwaltungs-XML beschrieben ist)
├ Style ID
├ Name des Antragsformulars
├ Spezifikationsmuster des Antragsformulars
├ Empfangsverwaltungs-ID
├ Klassifizierung
├ Informationen zum Verfahren als Vorlage
│ ├ Prozedur-ID
│ └ Name der Prozedur
├ Verfahrensbedingungen
│ ├ Anwendungstyp
│ ├ Antragsformular (Verfahrenskennung, Antragsformularversion)
│ ├ Signieren (An- / Abwesenheit, maximale Anzahl von Signaturen)
│ ├ Angehängte Dokumente (Anwesenheit / Abwesenheit, erforderlich/Irgendein/Kann nicht angehängt werden, Dokumentname, behoben/Irgendein、書類名、送付方法)
│ ├ Übermittlungsziel (Kennung des Übermittlungsziels, Name des Übermittlungsziels, Hauptklassifizierung, mittlere Klassifizierung, Nebenklassifizierung)
│ ├ Single Style/Mehrere Stile
│ ├ So ziehen Sie sich zurück
│ ├ Mit oder ohne Dienstanfrage
│ ├ Gebührentyp
│ ├ Empfangszeit
│ ├ Stil
│ ├ Flag zum Löschen von Prozeduren
│ └ Status automatisches Übergangsziel
└ Mögliche Bearbeitung nach Ankunft
├ Rücktritt (keine, Anfrage, Antrag)
├ Änderung (keine, teilweise Änderung, Wiedervorlage, Antrag auf Änderung)
├ Ausstellung offizieller Dokumente (keine, ja)
├ Gebührenregistrierung(Zahlungsaufschub)(Keine, ja)
├ Verfahren abgeschlossen (Benachrichtigung, Rücknahme, Wiedervorlage, endgültige Erfassung offizieller Dokumente)
└ Kommentarbenachrichtigung (keine, mit Nachricht, mit Datei)
Darüber hinaus werden die folgenden Informationen für jeden neuen Antrag, jede Auszahlungsanforderung, jede Auszahlungsanwendung und jede Änderungsanwendung im öffentlichen Dokument "Liste der Verfahrensstatusübergänge für API-Tests" veröffentlicht.
Statusübergangsliste für API-Testverfahren
Statusübergangsliste
├ Prozedurkennung
├ Prozedurname
├ Betrieb / Bearbeitung für die Anwendung
│ ├ Rückzug
│ ├ Änderungsantrag
│ ├ Benachrichtigung über Kommentare
│ ├ Ausstellung offizieller Dokumente
│ └ Zahlungsstatus ändern
├ Anwendungsstatus und Aktionen
│ ├ Vorheriger Antragsstatus
│ │ ├ Zielanwendung
│ │ └ Antragsstatus (Antragsunterstatus)
│ ├ Aktion
│ │ ├ Bedienung auf der Benutzerseite
│ │ └ e-Vorhandensein oder Nichtvorhandensein einer Gov-seitigen Verarbeitung
│ └ Status nach der Bewerbung
│ ├ Zielanwendung
│ └ Bewerbungsstatus (Bewerbungsstatus)
└ Bemerkungen
Verwenden Sie diese Materialien als Referenz, um Testdaten zu erstellen, damit Sie den gewünschten Test durchführen können.
Die Prozedurkennung "900A010200001000" wird als Testdaten aufgenommen. Dieses Verfahren ist "Benachrichtigung über den Erwerb des Status einer versicherten Arbeitsversicherung / elektronische Bewerbung". Beigefügte Dokumente sind erforderlich und es werden keine offiziellen Dokumente ausgestellt.
Die erforderlichen Dateien lauten wie folgt. Für den Dateinamen wird die Spezifikation im öffentlichen Dokument "Externe Zusammenarbeit API-Anwendungsdatenspezifikation Allgemeine Datenspezifikation" festgelegt. Befolgen Sie daher die Regel.
No | Dateikategorie | Dateiname | Bemerkungen |
---|---|---|---|
1 | Konfigurationsmanagement-XML | kousei.xml | |
2 | Antragsformular XML | 900A01020000100001_01.xml | Formular-ID (18 alphanumerische Zeichen halber Breite) + "_01 "behoben |
3 | Anhang | Angehängte Datei.docx |
Diese Dateien befinden sich in der folgenden Hierarchie.
Dateihierarchie
kousei.xml
├ 900A01020000100001_01.xml
└ Angehängte Datei.docx
Die für das Konfigurationsverwaltungs-XML (kousei.xml) erforderlichen Informationen lauten wie folgt.
No | Artikel | Inhalt | Bemerkungen |
---|---|---|---|
1 | Prozedur-ID | 900A010200001000 | |
2 | Prozedurname | API-Testverfahren (arbeitsversicherungsbezogenes Verfahren) (Mitteilung) 0001 / API-Testverfahren (arbeitsversicherungsbezogenes Verfahren) (Mitteilung) 0001 | |
3 | 900A01020000100001 | ||
4 | |||
5 | 0001 | ||
6 | Formular-ID Antragsformular Formularname API-Testverfahren (arbeitsversicherungsbezogenes Verfahren) (Kommunikation) 0001_01 Muster des Antragsformulars Spezifikation des Antragsformulars XML-Strukturdefinition [API-Testverfahren] Muster Empfangsverwaltungsagentur-ID | 100900 |
Die Bedingungen für das in der XML-Konfigurationsverwaltung (kousei.xml) beschriebene Verfahren lauten wie folgt.
No | Artikel | Inhalt | Bemerkungen |
---|---|---|---|
1 | Anwendungstyp | Normale Anwendung | |
2 | Anmeldeformular-Verfahrenskennung (Antragsformular) | 900A010200001000 | |
3 | Anmeldeformular-Version des Antragsformulars | 0003 | |
4 | Unterschrift-Anwesenheit oder Abwesenheit | Unterschriftあり(単署) | |
5 | Unterschrift-Maximale Anzahl von Signaturen | 1 | |
6 | Anhang-Anwesenheit oder Abwesenheit | Ja | |
7 | Anhang-Verpflichtend/Irgendein | Verpflichtend | |
8 | Anhang-Dokumentname behoben/Irgendein | Dokumentname behoben | Nennen Sie das Dokument "Test Anhang 1" |
9 | Anhang-Dokumentname | Testanhang 1 | |
10 | Anhang-Versandart | Anhang | |
11 | Einreichungsziel-Übermittlungskennung | 900API00000000001001001 | |
12 | Einreichungsziel-Name der Einreichung | Ministerium für innere Angelegenheiten und Kommunikation,Verwaltungsverwaltungsbüro,API |
Betten Sie diese Informationen in das Tag des Konfigurationsverwaltungs-XML (kousei.xml) ein.
kousei.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="999000000000000001.xsl" type="text/xsl"?>
<DataRoot>
<Formular-ID>999000000000000001</Formular-ID>
<Style-Version>0001</Style-Version>
<STYLESHEET>999000000000000001.xsl</STYLESHEET>
<Konfigurationsinformations-ID="Konfigurationsinformationen">
<Verwaltungsinformationen>
<Verfahrensnummer>
<ID der Empfangsverwaltung>100900</ID der Empfangsverwaltung>
<Prozedur-ID>900A010200001000</Prozedur-ID>
</Verfahrensnummer>
<Prozedurname>API-Testverfahren (arbeitsversicherungsbezogenes Verfahren) (Mitteilung) 0001 / API-Testverfahren (arbeitsversicherungsbezogenes Verfahren) (Mitteilung) 0001</Prozedurname>
<Erste Empfangsnummer/>
<Anwendungstyp>Neue Bewerbung</Anwendungstyp>
<Kontaktinformationen des Antragstellers>
<Bewerbungsinformation>
<Vollständiger Name>Hoge Hoge</Vollständiger Name>
<Nennen Sie Frigana>Vorgeben, Gana</Nennen Sie Frigana>
<Position/>
<Name der Unternehmensorganisation/>
<Name der Unternehmensorganisation Frigana/>
<Abteilungsname/>
<Abteilungsname Frigana/>
<Postleitzahl>1200001</Postleitzahl>
<Adresse>Oyada, Adachi-ku, Tokio</Adresse>
<Adresse Frigana>Tokio Adachiku Oyata</Adresse Frigana>
<Telefonnummer>12-232-1232</Telefonnummer>
<Faxnummer/>
<E-Mail-Addresse>[email protected]</E-Mail-Addresse>
</Bewerbungsinformation>
<Kontaktinformation>
<Vollständiger Name>chinesische Charaktere</Vollständiger Name>
<Nennen Sie Frigana>Vorgeben, Gana</Nennen Sie Frigana>
<Position/>
<Name der Unternehmensorganisation/>
<Name der Unternehmensorganisation Frigana/>
<Abteilungsname/>
<Abteilungsname Frigana/>
<Postleitzahl>1200001</Postleitzahl>
<Adresse>Oyada, Adachi-ku, Tokio</Adresse>
<Adresse Frigana>Tokio Adachiku Oyata</Adresse Frigana>
<Telefonnummer>12-232-1232</Telefonnummer>
<Faxnummer/>
<E-Mail-Addresse>[email protected]</E-Mail-Addresse>
</Kontaktinformation>
<Informationen zum Registrierungsschein für die Delegation sind beigefügt>
<Ausgabe Nummer/>
<Name des Registrierungsregistrierungsformulars/>
<Dateiname des Registrierungsregistrierungsbelegs/>
</Informationen zum Registrierungsschein für die Delegation sind beigefügt>
</Kontaktinformationen des Antragstellers>
</Verwaltungsinformationen>
<Angehängte Dokumentattributinformationen>
<Art des Anhangs>Anhang</Art des Anhangs>
<Angehängter Dokumentname>Testanhang 1</Angehängter Dokumentname>
<Name der angehängten Dokumentdatei>Angehängte Datei.docx</Name der angehängten Dokumentdatei>
<Einreichungsinformationen>1</Einreichungsinformationen>
</Angehängte Dokumentattributinformationen>
<Gebühreninformationen>
<Gebühr 1>
<Gebührenkennung/>
<Abgekürzter Betreffcode/>
<Kurzname des Subjekts/>
<Geldbetrag überweisen/>
</Gebühr 1>
<Gebühr 2>
<Gebührenkennung/>
<Abgekürzter Betreffcode/>
<Kurzname des Subjekts/>
<Geldbetrag überweisen/>
</Gebühr 2>
<Gebühr 3>
<Gebührenkennung/>
<Abgekürzter Betreffcode/>
<Kurzname des Subjekts/>
<Geldbetrag überweisen/>
</Gebühr 3>
<Gebühr 4>
<Gebührenkennung/>
<Abgekürzter Betreffcode/>
<Kurzname des Subjekts/>
<Geldbetrag überweisen/>
</Gebühr 4>
<Gebühr 5>
<Gebührenkennung/>
<Abgekürzter Betreffcode/>
<Kurzname des Subjekts/>
<Geldbetrag überweisen/>
</Gebühr 5>
<Gebühr 6>
<Gebührenkennung/>
<Abgekürzter Betreffcode/>
<Kurzname des Subjekts/>
<Geldbetrag überweisen/>
</Gebühr 6>
</Gebühreninformationen>
<Kommunikationsspalte/>
<Informationen zur Untersuchung des Ministeriums>
<Untersuchung des Ministeriums 1>
<Informationsetikett für Anfragen des Ministeriums/>
<Informationen zur Untersuchung des Ministeriums/>
</Untersuchung des Ministeriums 1>
<Untersuchung des Ministeriums 2>
<Informationsetikett für Anfragen des Ministeriums/>
<Informationen zur Untersuchung des Ministeriums/>
</Untersuchung des Ministeriums 2>
<Untersuchung des Ministeriums 3>
<Informationsetikett für Anfragen des Ministeriums/>
<Informationen zur Untersuchung des Ministeriums/>
</Untersuchung des Ministeriums 3>
<Untersuchung des Ministeriums 4>
<Informationsetikett für Anfragen des Ministeriums/>
<Informationen zur Untersuchung des Ministeriums/>
</Untersuchung des Ministeriums 4>
<Untersuchung des Ministeriums 5>
<Informationsetikett für Anfragen des Ministeriums/>
<Informationen zur Untersuchung des Ministeriums/>
</Untersuchung des Ministeriums 5>
<Untersuchung des Ministeriums 6>
<Informationsetikett für Anfragen des Ministeriums/>
<Informationen zur Untersuchung des Ministeriums/>
</Untersuchung des Ministeriums 6>
<Untersuchung des Ministeriums 7>
<Informationsetikett für Anfragen des Ministeriums/>
<Informationen zur Untersuchung des Ministeriums/>
</Untersuchung des Ministeriums 7>
<Untersuchung des Ministeriums 8>
<Informationsetikett für Anfragen des Ministeriums/>
<Informationen zur Untersuchung des Ministeriums/>
</Untersuchung des Ministeriums 8>
<Untersuchung des Ministeriums 9>
<Informationsetikett für Anfragen des Ministeriums/>
<Informationen zur Untersuchung des Ministeriums/>
</Untersuchung des Ministeriums 9>
<Untersuchung des Ministeriums 10>
<Informationsetikett für Anfragen des Ministeriums/>
<Informationen zur Untersuchung des Ministeriums/>
</Untersuchung des Ministeriums 10>
</Informationen zur Untersuchung des Ministeriums>
<Einreichungsinformationen>
<Übermittlungskennung>900API00000000001001001</Übermittlungskennung>
<Name der Einreichung>Ministerium für innere Angelegenheiten und Kommunikation,Verwaltungsverwaltungsbüro,API</Name der Einreichung>
</Einreichungsinformationen>
<Attributinformationen zum Antragsformular><Antragsformular ID>900A01020000100001</Antragsformular ID><Version des Antragsformulars>0003</Version des Antragsformulars>
<Name des Antragsformulars>API-Testverfahren (arbeitsversicherungsbezogenes Verfahren) (Mitteilung) 0001_01</Name des Antragsformulars><Name der Anwendungsdatei>900A01020000100001_01.xml</Name der Anwendungsdatei></Attributinformationen zum Antragsformular></Konfigurationsinformationen>
</DataRoot>
Erstellen Sie das Antragsformular XML (900A01020000100001_01.xml) wie folgt.
900A01020000100001_01.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="900A01020000100001.xsl" ?>
<DataRoot>
<Formular-ID>900A01020000100001</Formular-ID>
<Style-Version>0003</Style-Version>
<STYLESHEET>900A01020000100001.xsl</STYLESHEET>
<Formularkopie Informationen>0</Formularkopie Informationen>
<Doctype>1</Doctype>
<G00005-A-250045-001_1>
<Formulartyp>13101</Formulartyp>
<Versicherte Nummer>
<Versicherte Nummer 4 Ziffern></Versicherte Nummer 4 Ziffern>
<Versicherte Nummer 6 Ziffern></Versicherte Nummer 6 Ziffern>
<Versicherte Nummer CD></Versicherte Nummer CD>
</Versicherte Nummer>
<Erhalten>1</Erhalten>
<Versicherten Name>Degen Ai Taro</Versicherten Name>
<Versicherter Name Frigana>API Taro</Versicherter Name Frigana>
<Name nach Änderung></Name nach Änderung>
<Name nach Änderung Frigana></Name nach Änderung Frigana>
<Sex>Mann</Sex>
<Geburtstag>
<Jahr>Showa</Jahr>
<Jahr>59</Jahr>
<Mond>5</Mond>
<Tag>23</Tag>
</Geburtstag>
<Büro nummer>
<Büronummer 4 Ziffern>1111</Büronummer 4 Ziffern>
<Geschäftsstelle Nummer 6 Ziffern>222222</Geschäftsstelle Nummer 6 Ziffern>
<Büronummer CD>3</Büronummer CD>
</Büro nummer>
<Qualifikationsdatum>
<Jahr>Heisei</Jahr>
<Jahr>27</Jahr>
<Mond>4</Mond>
<Tag>9</Tag>
</Qualifikationsdatum>
<Grund, versichert zu werden>1</Grund, versichert zu werden>
<Lohn>
<Zahlungsart>1</Zahlungsart>
<Monatliches Gehalt>500</Monatliches Gehalt>
</Lohn>
<Beschäftigungsstatus>7</Beschäftigungsstatus>
<Besetzung>1</Besetzung>
<Typklassifizierung der versicherten Person zum Zeitpunkt des Erwerbs/>
<Sie müssen nicht nach mehreren Nummern suchen/>
<Bereitstellung der Vertragslaufzeit>Ja</Bereitstellung der Vertragslaufzeit>
<Gibt an, ob die Vertragslaufzeit festgelegt ist oder nicht>
<Es gibt eine feste Vertragslaufzeit>
<Vertragslaufzeit beginnt>
<Jahr>Heisei</Jahr>
<Jahr>27</Jahr>
<Mond>4</Mond>
<Tag>9</Tag>
</Vertragslaufzeit beginnt>
<Ende der Vertragslaufzeit>
<Jahr>Heisei</Jahr>
<Jahr>28</Jahr>
<Mond>3</Mond>
<Tag>31</Tag>
</Ende der Vertragslaufzeit>
<Bestehen einer Vertragsverlängerungsklausel>Ja</Bestehen einer Vertragsverlängerungsklausel>
</Es gibt eine feste Vertragslaufzeit>
</Gibt an, ob die Vertragslaufzeit festgelegt ist oder nicht>
<Geplante Arbeitszeiten pro Woche>
<Zeit>40</Zeit>
<Protokoll>0</Protokoll>
</Geplante Arbeitszeiten pro Woche>
<Büroname>Examination Co., Ltd.</Büroname>
<Spalte Bemerkungen_Antragsteller>
<Staatsbürgerschaftsland/>
<Aufenthaltsstatus/>
<Aufenthaltsdauer>
<Jahr/>
<Mond/>
<Tag/>
</Aufenthaltsdauer>
<Gibt an, ob eine Genehmigung für Aktivitäten außerhalb des Qualifikationsstatus vorliegt oder nicht/>
<Vertragsarbeiter entsenden/>
<Bemerkungen/>
</Spalte Bemerkungen_Antragsteller>
<Geschäftsinhaber>
<Adresse>Tokio</Adresse>
<Vollständiger Name>Testbesitzer</Vollständiger Name>
<Telefonnummer>
<Vorwahl>03</Vorwahl>
<Postleitzahl>3030</Postleitzahl>
<Abonnentenanzahl>3333</Abonnentenanzahl>
</Telefonnummer>
</Geschäftsinhaber>
<Benachrichtigungsdatum>
<Jahr>Heisei</Jahr>
<Jahr>27</Jahr>
<Mond>4</Mond>
<Tag>1</Tag>
</Benachrichtigungsdatum>
<Adresse>Shinagawa</Adresse>
<Spalte für die Eingabe von Sozialversicherungsarbeitern>
<Erstelldatum>
<Jahr>Heisei</Jahr>
<Jahr></Jahr>
<Mond></Mond>
<Tag></Tag>
</Erstelldatum>
<Übermittlungsagent Anzeige des Verwaltungsagenten></Übermittlungsagent Anzeige des Verwaltungsagenten>
<Vollständiger Name></Vollständiger Name>
<Telefonnummer>
<Vorwahl></Vorwahl>
<Postleitzahl></Postleitzahl>
<Abonnentenanzahl></Abonnentenanzahl>
</Telefonnummer>
<Ergänzende Spalte></Ergänzende Spalte>
</Spalte für die Eingabe von Sozialversicherungsarbeitern>
<Spalte Bemerkungen_Mitarbeiter>
<Bemerkungen></Bemerkungen>
<Datum der Benachrichtigung über die Bestätigung>
<Jahr>Heisei</Jahr>
<Jahr></Jahr>
<Mond></Mond>
<Tag></Tag>
</Datum der Benachrichtigung über die Bestätigung>
</Spalte Bemerkungen_Mitarbeiter>
<Xmit>0</Xmit>
</G00005-A-250045-001_1>
</DataRoot>
Wenn Sie die Einschränkungen einhalten, z. B. ob Daten in jedem Tag weggelassen werden können, werden die Anzahl der Zeichen und der Zeichentyp, die Formatprüfung usw. problemlos bestanden. Da es sich um Testdaten handelt, ist fiktiver Inhalt in Ordnung.
Die Prozedurkennung "950A102200039000" wird als Testdaten verwendet. Bei diesem Verfahren handelt es sich um "Erwerb einer nationalen Rentenversicherungsqualifikation / Typänderung / Typbestätigung (Nr. 3 der anwendbaren versicherten Person) Benachrichtigung / elektronischer Antrag". Es sind keine beigefügten Dokumente erforderlich und offizielle Dokumente werden ausgestellt.
Die erforderlichen Dateien lauten wie folgt.
No | Dateikategorie | Dateiname | Bemerkungen |
---|---|---|---|
1 | Konfigurationsmanagement-XML | kousei.xml | |
2 | Antragsformular XML ① | 950A10220003900001_01.xml | Formular-ID (18 alphanumerische Zeichen halber Breite) + "_01 "behoben |
3 | Konfigurationsinformationen XML für Antragsformular ① | kousei20200716142110000.xml | ‘kousei’+ yyyyMMddHHmmssSSS |
4 | Antragsformular XML② | 950A10220003900002_01.xml | |
5 | Konfigurationsinformationen XML für Antragsformular ② | kousei20200716142115000.xml |
"YyyyMMddHHmmssSSS" in der Konfigurationsinformation XML für das Antragsformular ist das Erstellungsdatum und die Erstellungszeit (in Hundertstelsekunden) der Datei, die hinzugefügt werden soll, um den Dateinamen im Ordner "application matter" eindeutig zu machen. Dies wird auch im öffentlichen Dokument "Externe Verknüpfungs-API-Anwendungsdatenspezifikation Allgemeine Datenspezifikation" beschrieben.
Diese Dateien haben die folgende Hierarchie.
Dateihierarchie
kousei.xml
├ 950A10220003900001_01.xml
├ kousei20200716142110000.xml
├ 950A10220003900002_01.xml
└ kousei20200716142115000.xml
Der spezifische Inhalt von xml wird weggelassen.
In Zukunft wird beim Erstellen von Testdaten und Überprüfen des Vorgangs das Datenkonvertierungstool verwendet. Mit diesem Tool können Sie Hash-Werte berechnen, im Base64-Format codieren oder decodieren und die codierten oder decodierten Ergebnisse in eine Datei ausgeben. Verwenden Sie das Tool in den folgenden Fällen.
--Überprüfen Sie den vom signierten XML-Generierungstreiber berechneten Hashwert
Dieses Mal erstellen wir einen signierten XML-Generierungstreiber für die Benutzerregistrierung / -authentifizierung und die Stapelanwendung. In der Stapelanwendung unterscheiden sich die zu signierenden Dateien zwischen dem Standardformat und dem einzelnen Dateisignaturformat. Erstellen Sie daher jeweils einen Treiber.
Bei der Benutzerregistrierung / -authentifizierung wird der Hash-Wert für den Bereich berechnet, der vom \
Vor dem Ausführen des Tools muss die in der Anwendungsanwendung für die e-Gov-Verifizierungsumgebung angegebene Benutzer-ID in der Umgebungsvariablen "EGOV_USER_ID" festgelegt werden.
Der signierte XML-Generierungstreiber lautet:
make_register_xml.rb
require 'kiji'
egov_env = {
"KEY" => File.expand_path("./Zertifikat/e-GovEE01_sha2.pfx"),
"KEY_PASSWORD" => "gpkitest",
}
user_id = ENV["EGOV_USER_ID"]
pkcs12 = OpenSSL::PKCS12.new(File.open(egov_env["KEY"], "rb"),egov_env["KEY_PASSWORD"])
#Benutzer-ID festlegen
appl_data = Nokogiri::XML::Builder.new do |xml|
xml.DataRoot {
xml.ApplData(Id: 'ApplData') {
xml.UserID user_id
}
}
end
doc = appl_data.to_xml(save_with: 0)
signer = Kiji::Signer.new(doc) do |s|
s.cert = pkcs12.certificate
s.private_key = pkcs12.key
s.digest_algorithm = :sha256
s.signature_digest_algorithm = :sha256
end
signer.security_node = signer.document.root
#Berechnen Sie den Digest-Wert
signer.document.xpath('/DataRoot/ApplData').each do |node|
signer.digest!(node, id: '#ApplData')
end
#Zeichen
signer.sign!(issuer_serial: true)
#Schreiben Sie in XML
File.write("register.xml", signer.to_xml)
Im Standardformat besteht der Punkt darin, dass das Konfigurationsverwaltungs-XML zu einer signierten XML wird. Befolgen Sie die nachstehenden Schritte, um zu unterschreiben.
Der zu erstellende Treiber ist make_zip_file_standard_format.rb. In Bezug auf die Treibereingabe / -ausgabe befindet sich ./zip_data/standard/ in dem Ordner, in dem sich der Treiber befindet, und darunter befinden sich In- und Out-Ordner.
Im Ordner in befindet sich ein Ordner 900A010200001000 (1) und die folgenden 3 Dateien. · Das ist der Grund. xml A 900A01020000100001_01.xml ・ Angehängte Datei .docx
Erstellen Sie für die Zertifikatdatei einen Zertifikatordner direkt unter dem Ordner, in dem sich der Treiber befindet, und platzieren Sie e-GovEE01_sha2.pfx darin.
Vor dem Ausführen des Treibers ist der Ordner out leer. Wenn Sie den Treiber ausführen, wird der Ordner 900A010200001000 (1), apply_data.zip, erstellt. Der Ordner 900A010200001000 (1) enthält dieselben Dateien wie der Ordner in, und kousei.xml ist hier eine signierte XML. Bei apply_data.zip handelt es sich um ein Zip-Format des Ordners 900A010200001000 (1).
Codieren Sie apply_data.zip mit dem Datenkonvertierungstool (https://hogehoge.tk/tool/) in das Base64-Format. Fügen Sie das Codierungsergebnis in das Tag \
Nach dem Ausführen des Treibers befindet sich die Ausführungsumgebung im folgenden Status.
Standardformat Layout
Ausführungsumgebung/
├ make_zip_file_standard_format.rb
├ Zertifikat/
│ └ e-GovEE01_sha2.pfx
└ zip_data/
└ standard/
├ in/
│ └ 900A010200001000(1)/
│ ├ kousei.xml
│ ├ 900A01020000100001_01.xml
│ └ Angehängte Datei.docx
└ out/
├ 900A010200001000(1)/
│ ├ kousei.xml
│ ├ 900A01020000100001_01.xml
│ └ Angehängte Datei.docx
└ apply_data.zip
Der signierte XML-Generierungstreiber lautet:
make_zip_file_standard_format.rb
require 'fileutils'
require 'zip'
require "cgi"
require 'date'
require 'kiji'
#Datei, Passwort
Key = "./Zertifikat/e-GovEE01_sha2.pfx"
password = "gpkitest"
#Definieren Sie den Eingabe- / Ausgabezielpfad
input_base_path = "./zip_data/standard/in/"
output_base_path = "./zip_data/standard/out/"
#Definieren Sie den Dateipfad für Eingabe- / Ausgabedaten
Procedure = Struct.new(:folder, :kousei_xml, :application_xml, :attachment_file)
proc = Procedure.new("900A010200001000(1)","kousei.xml","900A01020000100001_01.xml","Angehängte Datei.docx")
input_path = "#{input_base_path}/#{proc.folder}"
output_path = "#{output_base_path}/#{proc.folder}"
signed_xml_path = "#{input_path}/#{proc.kousei_xml}"
style_file_path = "#{input_path}/#{proc.application_xml}"
attachment_file_path = "#{input_path}/#{proc.attachment_file}"
app_files_path = ["#{style_file_path}", "#{attachment_file_path}"]
#Löschen Sie den Ausgabezielordner, die Datei usw.
Dir.glob("#{output_base_path}/*") do |f|
FileUtils.rm_r(f)
end
#Reißverschlussgeneration
pkcs12 = OpenSSL::PKCS12.new(File.open(Key, "rb"),password)
zipper = Kiji::Zipper.new() do |s|
s.cert = pkcs12.certificate
s.private_key = pkcs12.key
end
#Zeichen
signer = zipper.sign(signed_xml_path, app_files_path)
#Erstellen Sie einen Anwendungsordner
FileUtils.mkdir_p(output_path)
#Exportieren Sie signierte XML
File.write("#{output_path}/#{proc.kousei_xml}", signer.to_xml)
#Kopieren Sie Anwendungs-XML und angehängte Dateien
app_files_path.each do |f|
FileUtils.cp(f, output_path)
end
#Kombinieren Sie den Ausgabeordner zu einer Zip-Datei
zipper.write_zip(output_base_path, "#{output_base_path}/apply_data.zip")
Im individuellen Dateisignaturformat ist der Punkt, dass "Konfigurationsinformationen XML für Anwendung ①" und "Konfigurationsinformationen XML für Anwendung ②" jeweils signierte XML sind (kousei.xml ist keine signierte XML). .. Befolgen Sie die nachstehenden Schritte, um zu unterschreiben.
Der zu erstellende Treiber ist make_zip_file_individual_signature_format.rb. In Bezug auf die Treibereingabe / -ausgabe befindet sich ./zip_data/indivisual/ in dem Ordner, in dem sich der Treiber befindet, und darunter befinden sich In- und Out-Ordner. Im Ordner in befindet sich ein Ordner 950A102200039000 (1) und die folgenden 5 Dateien. ・ Kousei.xml // Konfigurationsmanagement-XML ・ 950A10220003900001_01.xml // Antragsformular XML ① ・ Kousei20200716142110000.xml // Konfigurationsinformationen XML für Anwendungs-XML ① ・ 950A10220003900002_01.xml // Antragsformular XML② ・ Kousei20200716142115000.xml // Konfigurationsinformationen XML für Anwendungs-XML②
Erstellen Sie für die Zertifikatdatei einen Zertifikatordner direkt unter dem Ordner, in dem sich der Treiber befindet, und platzieren Sie e-GovEE01_sha2.pfx darin.
Vor dem Ausführen des Treibers ist der Ordner out leer. Durch Ausführen des Treibers wird ein 950A102200039000 (1) -Ordner (apply_data.zip) erstellt. Der Ordner 950A102200039000 (1) enthält dieselben Dateien wie der Ordner in. Allerdings sind kousei20200716142110000.xml und kousei20200716142115000.xml hier mit xml signiert. Bei apply_data.zip handelt es sich um ein Zip-Format des Ordners 950A102200039000 (1).
Codieren Sie apply_data.zip mit dem Datenkonvertierungstool (https://hogehoge.tk/tool/) in das Base64-Format. Fügen Sie das Codierungsergebnis in das Tag \
Nach dem Ausführen des Treibers befindet sich die Ausführungsumgebung im folgenden Status.
Layoutkonfiguration für das individuelle Dateisignaturformat
Ausführungsumgebung/
├ make_zip_file_individual_signature_format.rb
├ Zertifikat/
│ └ e-GovEE01_sha2.pfx
└ zip_data/
└ indivisual/
├ in/
│ └ 950A102200039000(1)/
│ ├ kousei.xml
│ ├ 950A10220003900001_01.xml
│ ├ kousei20200716142110000.xml
│ ├ 950A10220003900002_01.xml
│ └ kousei20200716142115000.xml
└ out/
├ 950A102200039000(1)/
│ ├ kousei.xml
│ ├ 950A10220003900001_01.xml
│ ├ kousei20200716142110000.xml
│ ├ 950A10220003900002_01.xml
│ └ kousei20200716142115000.xml
└ apply_data.zip
Der signierte XML-Generierungstreiber lautet:
make_zip_file_individual_signature_format.rb
require 'fileutils'
require 'zip'
require "cgi"
require 'date'
require 'kiji'
#Signaturdatei und Passwort definieren
Key = "./Zertifikat/e-GovEE01_sha2.pfx"
password = "gpkitest"
#Definieren Sie den Eingabe- / Ausgabezielpfad
input_base_path = "./zip_data/indivisual/in/"
output_base_path = "./zip_data/indivisual/out/"
#Löschen Sie den Ausgabezielordner, die Datei usw.
Dir.glob("#{output_base_path}/*") do |f|
FileUtils.rm_r(f)
end
#Definieren Sie den Dateipfad für Eingabe- / Ausgabedaten
Procedure = Struct.new(:folder, :kousei_xml,
:config_info_appl_xml, :application_xml,
:config_info_appl_xml_2, :application_xml_2)
proc = Procedure.new("950A102200039000(1)","kousei.xml",
"kousei20200716142110000.xml","950A10220003900001_01.xml",
"kousei20200716142115000.xml","950A10220003900002_01.xml")
input_path = "#{input_base_path}/#{proc.folder}"
output_path = "#{output_base_path}/#{proc.folder}"
#Erstellen Sie einen Anwendungsordner
FileUtils.mkdir_p(output_path)
#Reißverschlussgeneration
pkcs12 = OpenSSL::PKCS12.new(File.open(Key, "rb"),password)
zipper = Kiji::Zipper.new() do |s|
s.cert = pkcs12.certificate
s.private_key = pkcs12.key
end
#Signieren Sie die Konfigurationsinformationen XML für Anwendung 1
signed_xml_path = "#{input_path}/#{proc.config_info_appl_xml}"
style_file_path = ["#{input_path}/#{proc.application_xml}"]
signer = zipper.sign(signed_xml_path, style_file_path)
#Exportieren Sie signierte XML
File.write("#{output_path}/#{proc.config_info_appl_xml}", signer.to_xml)
#Signieren Sie die Konfigurationsinformationen XML für Antragsformular 2
signed_xml_path_2 = "#{input_path}/#{proc.config_info_appl_xml_2}"
style_file_path_2 = ["#{input_path}/#{proc.application_xml_2}"]
signer = zipper.sign(signed_xml_path_2, style_file_path_2)
#Exportieren Sie signierte XML
File.write("#{output_path}/#{proc.config_info_appl_xml_2}", signer.to_xml)
#Listen Sie das zu kopierende Anwendungs-XML und die angehängten Dateien auf
copy_files_path = ["#{input_path}/#{proc.kousei_xml}", style_file_path, style_file_path_2]
#Kopieren Sie Anwendungs-XML und angehängte Dateien
copy_files_path.each do |f|
FileUtils.cp(f, output_path)
end
#Zippen Sie die Ausgabeliste
zipper.write_zip(output_base_path, output_base_path + "apply_data.zip")
Recommended Posts