authy vs otplib vs speakeasy
二要素認証ライブラリ
authyotplibspeakeasy類似パッケージ:

二要素認証ライブラリ

二要素認証ライブラリは、ユーザーのアカウントのセキュリティを強化するために使用されるツールです。これらのライブラリは、ユーザーがログインする際に、パスワードに加えて追加の認証要素を要求することで、アカウントの不正アクセスを防ぎます。これにより、セキュリティが大幅に向上し、ユーザーのデータを保護することができます。

npmのダウンロードトレンド

3 年

GitHub Starsランキング

統計詳細

パッケージ
ダウンロード数
Stars
サイズ
Issues
公開日時
ライセンス
authy09722.5 kB5-MIT
otplib02,222524 kB514日前MIT
speakeasy02,755-6710年前MIT

機能比較: authy vs otplib vs speakeasy

認証方式

  • authy:

    Authyは、SMS、音声通話、プッシュ通知などの多様な認証方式をサポートしています。これにより、ユーザーは自分にとって最も便利な方法で認証を受けることができます。

  • otplib:

    otplibは、TOTP(時間ベースのワンタイムパスワード)およびHOTP(カウンターベースのワンタイムパスワード)を生成するためのライブラリです。これにより、ユーザーは専用のアプリ(例:Google Authenticator)を使用して、簡単にワンタイムパスワードを生成できます。

  • speakeasy:

    speakeasyは、TOTPおよびHOTPの生成と検証を行うためのシンプルなAPIを提供します。特に、Node.jsアプリケーションにおいて、簡単に二要素認証を実装することができます。

セキュリティ機能

  • authy:

    Authyは、ユーザーのデバイスを認識し、異常なログイン試行を検出するための高度なセキュリティ機能を提供しています。また、バックエンドでのデータ暗号化も行われており、セキュリティが強化されています。

  • otplib:

    otplibは、標準的なアルゴリズムに基づいており、セキュリティが高いです。ただし、ユーザーのデバイスやアプリのセキュリティは開発者の責任となります。

  • speakeasy:

    speakeasyは、シンプルでありながら強力なセキュリティ機能を提供します。特に、シークレットキーの生成や、ワンタイムパスワードの検証が容易に行えます。

使いやすさ

  • authy:

    Authyは、APIを介して簡単に統合できるため、開発者にとって使いやすいです。特に、ドキュメントが充実しており、導入がスムーズです。

  • otplib:

    otplibは、シンプルなAPIを提供しており、特に軽量なライブラリを求める開発者にとって使いやすいです。

  • speakeasy:

    speakeasyは、Node.js向けに設計されており、特にサーバーサイドでの実装が簡単です。APIが直感的で、すぐに使い始めることができます。

依存関係

  • authy:

    Authyは、外部APIに依存しているため、インターネット接続が必要です。これにより、認証の信頼性が向上しますが、オフライン環境では使用できません。

  • otplib:

    otplibは、外部サービスに依存せず、完全にローカルで動作します。これにより、オフラインでも使用可能で、セキュリティが向上します。

  • speakeasy:

    speakeasyも、外部サービスに依存せず、ローカルで動作します。これにより、開発者は自分のアプリケーション内で完全に制御できます。

コミュニティとサポート

  • authy:

    Authyは、Twilioによって提供されており、広範なサポートとコミュニティがあります。問題が発生した場合には、公式のサポートを受けることができます。

  • otplib:

    otplibは、オープンソースであり、GitHub上で活発にメンテナンスされています。コミュニティからのサポートも得やすいです。

  • speakeasy:

    speakeasyもオープンソースであり、GitHubでの活発な開発が行われています。ドキュメントが充実しており、サポートも受けやすいです。

選び方: authy vs otplib vs speakeasy

  • authy:

    Authyは、外部サービスとの統合が必要な場合や、SMSや音声通話による認証を利用したい場合に適しています。特に、ユーザーに対して多様な認証方法を提供したい場合に選択すると良いでしょう。

  • otplib:

    otplibは、シンプルで軽量なライブラリを求めている場合に適しています。特に、TOTPやHOTPの標準に準拠した認証を自分で実装したい開発者に向いています。

  • speakeasy:

    speakeasyは、Node.js環境での使用を想定しており、特にサーバーサイドでの二要素認証の実装が簡単に行えるため、サーバーサイドアプリケーションに組み込みたい場合に選択するのが良いでしょう。

authy のREADME

node-authy Dependency Status

Authy and Verify API Client for Node.js written by Adam Baldwin.

Installation

npm install authy

When in doubt check out the official Authy and Verify docs.

Usage

Requiring node-authy

var authy = require('authy')('APIKEY');

Send OneTouch

OneTouch API docs are the source of truth. send_approval_request(id,user_payload,hidden_details,logos,callback)

authy.send_approval_request('1337', user_payload, [hidden_details], [logos], function (err, res) {
    // res = {"approval_request":{"uuid":"########-####-####-####-############"},"success":true}
});
  • id is the Authy id.
  • user_payload: { 'message': 'user message here', ['details': {...}] }
  • hidden_details: optional
  • logos: optional

Check Approval Status

check_approval_status (uuid,callback)

authy.check_approval_status(uuid, function(err, res) {
    res = {
      "approval_request": {
        "_app_name": YOUR_APP_NAME,
        "_app_serial_id": APP_SERIAL_ID,
        "_authy_id": AUTHY_ID,
        "_id": INTERNAL_ID,
        "_user_email": EMAIL_ID,
        "app_id": APP_ID,
        "created_at": TIME_STAMP,
        "notified": false,
        "processed_at": null,
        "seconds_to_expire": 600,
        "status": 'pending',
        "updated_at": TIME_STAMP,
        "user_id": USER_ID,
        "uuid": UUID
      },
      "success": true
    }
});

Register New User

User API Information

register_user(email, cellphone, [country_code], [send_install_link_via_sms], callback);

authy.register_user('baldwin@andyet.net', '509-555-1212', function (err, res) {
    // res = {user: {id: 1337}} where 1337 = ID given to use, store this someplace
});

If not given, country_code defaults to "1" and send_install_link_via_sms defaults to true.

Verify Token

verify(id, token, [force], callback);

authy.verify('1337', '0000000', function (err, res) {

});

Request SMS

request_sms(id, [force], callback);

authy.request_sms('1337', function (err, res) {

});

=======

request_call(id, [force], callback);

authy.request_call('1337', function (err, res) {

});

Delete Registered User

delete_user(id, callback);

authy.delete_user('1337', function (err, res) {

});

Get Registered User Status

user_status(id, callback);

authy.user_status('1337', function (err, res) {

});

Start Phone Verification

Browse the API docs for all available params.

phones().verification_start(phone_number, country_code, params, callback);

authy.phones().verification_start('111-111-1111', '1', { via: 'sms', locale: 'en', code_length: '6' }, function(err, res) {

});

The params argument is optional and sets 'sms' as the default via, leaving the other two options blank.

Check Phone Verification

Browse the API docs for all available params.

phones().verification_check(phone_number, country_code, verification_code, callback);

authy.phones().verification_check('111-111-1111', '1', '0000', function (err, res) {

});

Status of Phone Verification

Browse the API docs for all available params.

phones().verification_status(phone_number, country_code, callback);

authy.phones().verification_status('111-111-1111', '1', function (err, res) {

});
Contributors