kpsclient — トルコ Nüfus ve Vatandaşlık İşleri(KPS)SOAP クライアント(Go)
概要
kpsclient は、トルコの政府機関「Nüfus ve Vatandaşlık İşleri(KPS)」が提供する v2 SOAP サービスに対して問い合わせを行うための、シンプルで独立した Go パッケージです。本パッケージはまず WS-Trust(STS)に対して認証リクエストを行い、返却される SAML ベースのキーを取得します。そのキーで SOAP メッセージに対して HMAC-SHA1 署名を行い、署名済みのリクエストを KPS サービスへ送信。戻り値の SOAP 応答をパースして扱いやすい Go の構造体に変換することを目的としています。政府系サービスに求められる認証フローとメッセージ署名を自動化する点が特徴です。
リポジトリの統計情報
- スター数: 21
- フォーク数: 2
- ウォッチャー数: 21
- コミット数: 6
- ファイル数: 10
- メインの言語: Go
主な特徴
- WS-Trust(STS)経由のトークン取得と認証フローを自動化
- SAML ベースのキーを用いた HMAC-SHA1 による SOAP メッセージ署名
- 受信した SOAP/XML を Go の構造体にパースして取り扱いやすく変換
- 余計な依存を抑えた軽量実装(Go モジュール対応)
技術的なポイント
kpsclient の技術的な核は「認証トークン取得 → メッセージ署名 → SOAP 送受信」の一連フローを組み立てて自動化している点です。まず WS-Trust(セキュリティトークンサービス)へ STS リクエストを送信し、SAML ベースの鍵(通常は対称キー)を受け取ります。この鍵は SOAP Body を HMAC-SHA1 で署名するために使われ、KPS 側の仕様に合わせた署名方式を再現しています。XML/ SOAP のハンドリングでは名前空間や署名対象の選定、署名値の挿入位置(WS-Security ヘッダ)など、正確な構造が要求されるため、XML の構築・シリアライズ処理が重要です。レスポンス側では SOAP フォールト処理やステータス、ネストした XML 要素を Go の構造体にマッピングして扱いやすく変換します。実装は Go の標準ライブラリを中心に依存を少なく保つ設計で、go.mod によるモジュール管理がされています。注意点として、HMAC-SHA1(SHA-1 ベース)は現代の強度基準では弱いとされますが、本クライアントは KPS サービスの既存仕様に準拠するためにこの方式を採用しています。実運用では TLS 設定や資格情報の安全な保管、外部からの鍵露出防止などの追加対策が必要です。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file
- LICENSE: file
- README.md: file
- client.go: file
- go.mod: file
…他 5 ファイル
まとめ
KPS と連携する Go 製の軽量クライアントで、認証と SOAP 署名を自動化する実用的なライブラリ。
リポジトリ情報:
- 名前: kpsclient
- 説明: NVİ KPS Client
- スター数: 21
- 言語: Go
- URL: https://github.com/netinternet/kpsclient
- オーナー: netinternet
- アバター: https://avatars.githubusercontent.com/u/8136305?v=4
READMEの抜粋:
kpsclient
Basit, bağımsız bir Go paketi olarak Nüfus ve Vatandaşlık İşleri (KPS) v2 servislerine sorgu yapmaya yarar.
Bu paket, WS-Trust (STS) isteğini gerçekleştirir, STS tarafından döndürülen SAML tabanlı anahtarla servise HMAC-SHA1 imzalı SOAP isteği gönderir ve gelen yanıtı parse ederek daha kullanışlı bir Go yapısına dönüştürür.
Öne çıkanlar
- STS (Token Service) ile kimlik doğrulama akışını otomatik olarak işler.
- HMAC-SHA1 ile SOAP mesajlarını imzalar (KPS servisleriyle uyumlu o…