3Dセキュア対応までの道のり

2020/12/17に公開

この記事は 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

脚注
  1. https://prtimes.jp/main/html/rd/p/000000114.000006846.html ↩︎

Discussion