Skip to main content

2段階認証、MFAつくってみた

最近、iCloudのハッキングがあったせいか、いろんなサービスがやたらと2段階認証をすすめてくるので
自分の管理するウェブサイトにも実装すべく、2段階認証のプログラムを作ってみました。

まずは、今あるサービスを調べたところGoogleやAWSなどで採用している2段階認証は「RFC 6238 Time-Based One-Time Password」という規格?で作られているようです。
この規格で作るとOTP発行用のアプリケーションを作らなくても、既にGoogleが開発したものがあり手間が省けます。

Android: AWS Virtual MFA、Google Authenticator
iPhone: Google Authenticator
Windows: Phonn Authenticator
Blackberry: Google Authenticator

Source: アマゾン ウェブ サービス(AWS 日本語)

使用方法

$mfa = new MFA();

// 認証処理、成功すればTRUE、失敗すればFALSE
$mfa->verify({ワンタイムパスワード}, {シークレットキー});

// ワンタイムパスワード返り値に出力
$mfa->getOneTimePass({シークレットキー});

// シークレットキーを作成します。
$mfa->getKeygen();

使用方法はこのような感じで、基本的には上記のメソッドで認証ができます。
ただ、注意点が1つ、シークレットキーに使用できるのはbase32で16文字のものしか使用できません。

続きを読む