自前 Web アプリから TypeKey 認証を使ってみる

Posted by
ぴろり
Posted at
2006/04/18 15:30
Trackbacks
関連記事 (0)
Comments
コメント (1)
Post Comment
コメントできます
Category
開発メモ カテゴリ

 MovableType のコメント欄でも(主にスパム防止のためだけれど)使われているTypeKey 認証を、Perl で書かれた自前 Web アプリケーションから使うための覚書。

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  

ログインに成功すると、あなたの TypeKey アカウントに設定されているニックネームやメールアドレスが表示されますが、 magicvox.net サーバがそのアカウントパスワードを知ることはありません。

TypeKey 認証を使うメリット

  • TypeKey を使うユーザもサービスどちらも(今のところ)無料
  • TypeKey に一度ログインしておけば、TypeKey を使うサービス毎にログインし直す必要がない
  • サービス毎にユーザアカウントを作る必要がない
  • サービス側でユーザ ID やパスワードを保存する仕組みを用意しなくてもよい

ソースコード

 まず、自前Webアプリからログイン処理のページを表示する替わりに、 TypeKey の認証ページにリンクを張るかリダイレクトします。
https://www.typekey.com/t/typekey/login
?t=yFoWz0asou92Z91kp3yx&v=1.1
&_return=http://www.magicvox.net/archive/2006/src/TypeKey/login.cgi

 TypeKey での認証が終わったら _return で指定した URL にリダイレクトされるので、 TypeKey から渡されたクエリ文字列の正当性をチェックします。 チェックのややこしい部分は CPAN で公開されている Authen::TypeKey が全部やってくれます。 かなりお手軽。

#!/usr/bin/perl
;# login.cgi

use strict;
use lib './extlib';
use CGI::Carp qw(fatalsToBrowser);
use CGI;
use Authen::TypeKey;
use Data::Dumper;#DEBUG

print "Content-type: text/html; charset=UTF-8

";
print "<h1>TypeKey Login Test with Perl</h1>";

my $q = CGI->new;
;#print '<pre>'. Dumper ($q). '</pre>';#DEBUG

my $tk = Authen::TypeKey->new;
if ($tk) {
	$tk->token ('yFoWz0asou92Z91kp3yx');
	$tk->skip_expiry_check (0);
	$tk->expires (600);
	$tk->key_cache ('./typekey.reg');

	my $res = $tk->verify ($q);
	if ($res) {
;#		print '<pre>'. Dumper ($res). '</pre>';#DEBUG
		my $name = $res->{name};
		my $nick = $res->{nick};
		my $email = $res->{email};
		my $ts = $res->{ts};

		print "name : $name<br />
";
		print "nick : $nick<br />
";
		print "email : $email<br />
";
		print "TypeKey signed at ". localtime ($ts). "<br />
";
		print "www.magicvox.net signed at ". localtime (time ()). "<br />
";
	}
	else {
		print "login failed: ". $tk->errstr. "
";
	}
}
else {
	print "program failed: Authen::TypeKey->new
";
}

print '<p><a href="./">Back to login page</a></p>';<

 TypeKey を使ってユーザ ID とパスワードの組み合わせが正しいことが示されただけなので、 登録ユーザか否かのチェック等はサービス側で行う必要があります。 また、ページ毎に TypeKey に問い合わせる訳にもいかないので、 認証された後の Cookie によるセッション管理等はサービス側の責任になります。
 アカウントの新規登録やパスワードの再発行などの事務処理が無くなるだけで、 随分と楽チンできそうですけれど。

参考リンク

 オープン認証に使えるものとして、他に OpenID っていうのもあるようです。 こちらについても試してみたいところ :-)
この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  


この記事のアーカイブ

全ての記事 »
2006年
全てのカテゴリ »
電算室 » 開発メモ
全てのタグ »
, , ,

関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

寄せられたコメント (全 1 件中、最新 5 件まで表示しています)

Posted by
ぴろりぴろり
at
2006/04/20 21:56
ID
Cw1mORK6
携帯電話からも使えるのかな?ってことでDoCoMo F505iから挑戦してみる。
パスワード入力欄が*しか見えないので複雑なパスワードが入力できず orz
日本語が表示されず。
…使い勝手という面で言うと使えません。はい。

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。