2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プリザンターにTOTP(Time-based One-Time Password)認証機能を実装いたしました

Posted at

はじめに

2024年、3/12 リリース(ver.1.4.2.0)にて、当社でTOTP(Time-based One-Time Password)認証機能を実装いたしました。今更ではありますが、簡単に機能のご紹介をさせていただこうと思います。

TOTPとは?

TOTPはワンタイムパスワードの一種で、最初にサービス側とユーザ側の専用のアプリなどで暗号生成用のコードを共有しておき、そのコードを元に時間から共通のコードを生成し、認証します。
代表的なアプリにはGoole Authenticatorや、Microsoft. Authenticatorがあります。

何のために追加したか

プリザンター旧来の2段階認証では、メール認証しか使えませんでした。
これはネットワークに繋がっていないローカル環境などでは使用できません。対してTOTPでは、認証に別のアプリかデバイスが必要になりますが、性質上通信を必要としないため、多くの環境で利用することができます。
また、TOTPではワンタイムパスワードの発行に通信が発生しないため、(生成用のコードが漏洩しない限り)通信の傍受などで盗み取られる危険性は低くなります。
最近ではTOTP認証を採用しているサービスも多いので、ユーザーにとってもなじみがあり、導入もしやすいのではないかと思います。

実装について

Totpが有効化されている場合は既存の2段階認証と分岐する形で、MIT Licenseで公開されているOtp.NETプラグインを利用して認証するように実装いたしました。

使い方と各種パラメータ

有効化手順

  • Security.jsonのSecondaryAuthenticationパラメータを以下の通り変更
    • ModeをDefaultEnableに設定
    • NotificationTypeをTotpに設定
"SecondaryAuthentication": {
    "Mode": "DefaultEnable",
    "NotificationType": "Totp",
    "CountTolerances": 1,
    "NotificationMailBcc": false,
    "AuthenticationCodeCharacterType": "Number",
    "AuthenticationCodeLength": 8,
    "AuthenticationCodeExpirationPeriod": 300
},

初回登録

  • TOTP有効化後の初回ログイン時に表示されるQRコードを読み取り、認証アプリに登録する
  • 表示されるコードを入力してログインする
    • 初回は認証アプリに登録後、ログインするとコードが登録されます
    • ログインせずアプリに登録だけ行った場合、暗号コードが保存されないため再度登録し直す必要があります

登録解除(コードリセット)

  • ユーザ管理から、解除したいユーザの「秘密鍵有効」チェックを外す
    • 現在登録されている暗号コードが無効化され、再度初回登録画面が表示されるようになります

変更できるオプション

  • 上記パラメータのCountTolerancesを変更すると、指定した回数分古いコードで認証できるようになります
    • デフォルトの1では、現在表示されているパスワードと1つ前のパスワードでログインができます
    • たとえば2に設定すると、現在表示されているパスワードから2つ前までのパスワードログインできるようになります
    • 0に設定した場合、現在表示されているパスワードのみでログインできます

まとめ

2段階認証にTotpを追加したことで、手軽にセキュリティの強化ができるようになりました。
Githubなどにも採用されている認証方法なので、普段から利用されている方は特に始めやすく、ローカルでご利用の方や個人など、どのような環境でも使いやすくなっていると思いますので、ぜひ使ってみて頂きたいと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?