08 « 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 10

スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Posted on --/--/-- --. --:-- [edit]

category: スポンサー広告

TB: --    CM: --

--

PHP Yubikey で Yubico OTP認証 

最近ちらほら見かけるようになった、セキュリティトークンの YubiKeyを試してみました。今回は開発元のYubico社の(ユビカと読むらしい)認証サーバ(YubicoOTP)を使ってみます。米カリフォルニアの企業だけどやっぱり「指」にかけてるのかな?指キーに指子さん(^^)


なにはともあれ Yubikeyが無いと始まらないので、Yubico社のサイトで購入します。とりあえずスタンダードモデルを購入、エアメールで1週間くらいで届きました。
Yubikey.png


まず Yubikeyの設定をするため管理ソフト(YubiKey Personalization Tool)をインストールします。Yubico社のサイトでもダウンロードできますが、Macの場合は AppStoreからインストールできるのでそちらを利用しました。
Yubikey001.png


YubikeyをMacにさしたら管理ソフトを起動して「Yubikey is inserted」と表示され、認識していることを確認します。
yubikey002.png


[Yubico OTP]→[Quick] を押します。
yubikey003.png


「Slot1」を選択して[Regenerate]を何回か押します。「Public Identity」の12文字がYubiKeyを特定するためのIDです。このYubikeyのIDをユーザー情報と紐づけて認証することになります。最後に[Write Configuration]を押して設定をYubiKeyに書込みます。
yubikey005.png
OTPを生成すると、先頭の12文字が固定になっていることが分かります。
vvjvdnvcgvgikrterjitthnubdkcvgfkcebbthkfbjhc
vvjvdnvcgvginnilbdhdutcuflriuhufhuifrlgnndnj
vvjvdnvcgvgiicckkvbregikrujtdekeuehfibdbruff
vvjvdnvcgvgirfcvuujtnucejjifncibbvjrtchdtifu
vvjvdnvcgvgihrvtrikfiujeibbdlgdunlkfujkttite


次に設定したYubiKeyを、Yubico認証サーバに登録します。

[Upload to Yubico]を押します。
yubico010.png


Yubico社の登録用サイトが開きますので、メールアドレスと Yubikeyで生成したOTPを入力して[Upload AES key]を押します。(他の項目は自動で入力されています)
yubico011.png


「Success!」と表示されていれば登録完了です。
yubico012.png


設定が反映する15分ほど経過したら、デモサイトで認証できることを確認します。
yubico013.png

以上で Yubikeyの登録は完了です。続けてYubico社の認証サーバ(YubicoOTP)を使うためのAPIキーを取得します。

・Yubico Get API Keyサイト
https://upgrade.yubico.com/getapikey/

メールアドレスと YubiKeyのOTPを入力します。
yubico020.png


表示された「Client ID」と「Secret key」をこのあと作成するPHPプログラム内で使います。
yubico021.png


認証用のPHPを作るにあたって「Auth_Yubico」モジュールをインストールしておきます。
curl -O http://php-yubico.googlecode.com/files/Auth_Yubico-2.4.tgz
pear install Auth_Yubico-2.4.tgz


YubiKey OTPをYubica認証サーバで検証した結果が $authに入ってくるので、後はエラー判定するのみ。簡単です(^^)
require_once "Auth/Yubico.php";

// APIキーのセット
$yubi = new Auth_Yubico("<Client ID>", "<Secret key>", true);
// 認証処理実行
$auth = $yubi->verify("<YubiKey OTP>");

if (PEAR::isError($auth)) {
echo '認証NG';
} else {
echo '認証OK';
}

○サンプルコード
https://github.com/sizaki30/YubiKey

○動作サンプル
https://yubikey130709.cloudcontrolled.com/sample.php


以上です。

Posted on 2013/07/02 Tue. 00:38 [edit]

category: プログラム

thread: プログラミング  -  janre: コンピュータ

TB: 0    CM: 0

02

コメント

Comment
list

コメントの投稿

Secret

Comment
form

トラックバック

トラックバックURL
→http://arpanet617.blog.fc2.com/tb.php/45-cd7606e3
この記事にトラックバックする(FC2ブログユーザー)

Trackback
list

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。