3Dセキュア対応までの道のり
この記事は Kyash Advent Calendar 2020 の 17日目の記事です。
先日 11月17日に Kyash Card が 3Dセキュア に対応しました。
これにより、よりセキュアにKyash Cardをご利用いただくことができます。
また、3Dセキュア対応カードのみ使えるサービスでの利用や、OTP認証により固定パスワードが不要かつパスワードを覚える必要がないなど、3Dセキュアに対応しつつ、ユーザーにとって利便性が損なわれないリリースになれば幸いです。
現在自分は、決済まわり全般を担当しているPaymentチームに所属しています。
3Dセキュア対応は、そのPaymentチームのタスクとして、開発を行いました。
その際の対応について、システムの性質上記載できない点も多いのですが、どのようなことを行ったのかを簡単にですが、紹介させていただければと思います。
ユーザー認証
3DセキュアはECサイト等のオンライン取引時に、オーソリゼーションと言われる、与信判定処理の前にユーザー認証を行える仕組みです。
3Dセキュア取引では、ECサイトにてユーザーが決済を行った場合、最終的にイシュアへ認証要求が送られます。この際、Access Control Server(以下ACS)が、3Dセキュアの認証処理を担います。
今回Kyashでの3Dセキュアの対応において、Visa Consumer Authentication Service(以下VCAS)[1]をACSとして利用しました。
3Dセキュアの簡易フロー
3Dセキュア には1, 2 といった複数のバージョンが存在しますが、バージョン間での互換性がありません。
しかし、VCASがこの差異を吸収してくれるため、シンプルなAPIを実装するだけで、バージョンの差異をほとんど意識することなく、ユーザーの認証部分の実装を完了させることができました。
また、今回認証方法としてOTPを採用していますが、以下の理由でOTP認証のみとしました。
- OTPの場合、パスワードの登録や、覚えておく必要がなくなる
- 固定パスワードの場合、脆弱なパスワードによる不正利用の可能性がある
VCASは様々な認証方法を利用できるので、例えば将来的に生体認証やアプリログインによる認証等のリリースができればいいな、と思っています。
オーソリゼーション
3Dセキュアによる認証が成功した場合、通常の決済と同様に加盟店から、オーソリゼーションの電文が送信されます。
この際、事前に検証用のトークンがACSから加盟店に向けて返信されており、このトークンがオーソリゼーション電文にセットされています。
イシュアは、この検証用トークンを検証することによって、不正な3Dセキュア電文でないかの確認ができます。
Kyashでは電文処理を内製しているので、今回の3Dセキュア対応として、電文に追加されたフィールドのパースや、変更箇所も適切に処理ができるように改修を行いました。
テスト
リリース前に特定のカードだけ3Dセキュアを有効にして、パイロットテストを行いました。
3Dセキュア対応カードのみ利用できるサービスでの登録や、ECサイトによる決済時決済時の認証を行い、3Dセキュア認証がされていることを確認していきました。
上でも少し触れていますが、Kyashでは電文処理やVCAS用のAPIを実装を内製しているのもあり、自分たちで実装したものが、実際のカード決済シーンで使えるようになるのは感慨深いものがありました。
さいごに
Kyashにおける3Dセキュア対応について、簡単にですが、紹介させていただきました。
もし3Dセキュア対応の詳細な実装やVisa、QUICPayのシステムが気になる!という方は是非以下よりご連絡ください。
サーバーサイドエンジニア / Serverside Engineer
Discussion