�O��܂ł�OpenID�̊�b�m���Ƃ��āA����ɂ���l������p��𒆐S�ɉ�����Ă��܂����B����͂��̏����܂��APerl�ACatalyst�����p�����ۂ�Consumer�T�C�g���\�z���Ă݂܂��傤�B�i�ҏW���j
�@������ۂ�OpenID�𗘗p�����T�C�g���\�z���邽�߂ɕK�v�Ȓm���ɂ��ĐG�ꂽ���Ǝv���܂��B�܂���Consumer���̎�������T���Ă����܂��傤�B
�@�Ȃ��A�T���v����OpenID�ɂ䂩��̐[��Perl�ŋL�q���܂��B�T���v���͎��Linux�ł̓����z�肵�Ă��܂��B
�@Perl��p����OpenID��Consumer�����Ƃ��ẮAOpenID�̒҂�1�l�A�u���b�h�E�t�B�b�c�p�g���b�N���������Net::OpenID::Consumer���W���[��������܂��y��1�z�B�܂��͂��̃��W���[�����g���Ă����܂��傤�B
�y��1�z
�ق��̎����Ƃ��Ă�Net::OpenID::JanRain::Consumer������܂��B���̃��W���[�����W�������C��������OpenID�Ή��̃T�C�g�Ŏ��ۂɎg���Ă��郂�W���[���̂悤�ł��B
�@Perl�̒m���̂�����͎ߓǂ݂ł��\���܂��A�������łȂ��������������邩�Ǝv���̂ŁA�܂��̓C���X�g�[������������܂��傤�B�܂����̃��W���[�����ˑ����Ă��郂�W���[���̃C���X�g�[���Ɏ�o�b�h�m�E�n�E������̂ŁA���̓_�ɂ��Ă��G��Ă����܂��B
�@Perl���W���[���̃C���X�g�[����cpan�R�}���h��p����̂���ʓI�ł��B�]���āA��ʓI�ȃC���X�g�[�����@�Ƃ��ẮA
$ sudo cpan -i Net::OpenID::Consumer
�����s���܂��B�������ˑ����Ă���Crypt::DH�Ƃ���Diffie-Hellman�����L�������������W���[���ƁA����Crypt::DH���W���[���Ɉˑ����Ă���Math::BigInt���W���[���Ɋւ��āA��⑫���ׂ��_������܂��B
�@Crypt::DH���W���[���̃\�[�X�����Ă݂�ƁA6�s�ڂ�Math::BigInt���W���[����use�錾������܂��B
use Math::BigInt lib => "GMP,Pari";
�@�s���̎w��́AMath::BigInt�̎������W���[���̗D�揇�ʂ̎w��ł��B���̃��W���[���͂��傤�ǃI�u�W�F�N�g�w���ł���delegate�ɂȂ��Ă��āA�����̑I�����ł���悤�ɂȂ��Ă��܂��B����āA
�Ƃ������Ɏ������W���[�������邩�ǂ������s���Ă����A���݂��Ă��郂�W���[�����̗p���闬��ɂȂ��Ă��܂��B
�@�����Œ��ӂ��Ȃ���Ȃ�Ȃ��̂́A�f�t�H���g�ō̗p�����������W���[���ł���Math::BigInt::Calc�͑��x�ɖ�肪����܂��B���̂��߁A����������͂��܂����g�p�͔����������悢�ł��傤�B�]���āA���̏��Ԃ�cpan�R�}���h����͂��Ă����ƁA����Ȃ�C���X�g�[�����s����͂��ł��B
$ sudo cpan -i Math::BigInt $ sudo cpan -i Math::BigInt::GMP $ sudo cpan -i Crypt::DH $ sudo cpan -i Net::OpenID::Consumer
�@����ŃC���X�g�[���͊����ł��B
�@Net-OpenID-Consumer��API�̓���́A���J����Ă����V�m�v�V�X������A�ǂ������Ɖ����ł��邩�c�����邱�Ƃ��ł��邩�Ǝv���܂��BNet-OpenID-Consumer�ɂ͂������̃��W���[�����܂܂�Ă��܂����A��v�Ȃ��̂����Ȍ��ɉ�����Ă��������Ǝv���܂��B
�@��{�I�ɂ̓��[�U�[�����ڎg���̂͂���Net::OpenID::Consumer���W���[���݂̂ŁA�ق��̃��W���[���͊ԐړI�Ɏg�����A���ʂƂ��Ď擾�ł���I�u�W�F�N�g�ƂȂ�܂��B
�E ua()���\�b�h
Perl�̑�\�I��http�N���C�A���g���W���[���ł���LWP::UserAgent���W���[���A�܂��͂��̃T�u�N���X�̃C���X�^���X�ւ̃Q�b�^�[�^�Z�b�^�[�ł��B�Öق̗����Ƃ���Perl���W���[���ł�Java�̂悤�Ȍ���Ƃ͈���āA�璷�ȋL�q�ŏ�����Ă��邱�Ƃ������A�Q�b�^�[�^�Z�b�^�[�����\�b�h�Ƃ��ē������O�ő��݂��Ă��邱�Ƃ��قƂ�ǂł��B
�Ecache()���\�b�h
�Q�b�^�[�^�Z�b�^�[���\�b�h�ł��Bget($key), set($key, $value)�Ƃ��������\�b�h�����I�u�W�F�N�g�Ȃ�A��{�I�ɂ͉��ł��g���܂��B�Öق̗����Ƃ��āApackage�̐ړ�����Cache::���t�����W���[���͂قƂ�ǂ��ׂĂ��̏��������Ă��܂��B
�Econsumer_secret()���\�b�h
�Q�b�^�[�^�Z�b�^�[�ŁAConsumer���̔閧���ɂȂ�܂��B���̔閧�����X�v�[�t�B���O�i�Ȃ肷�܂��j��h�����߂Ɏg���i���X�inonce�j�̎��ȏ����̂��߂Ɏg���܂��B�^�C���X�^���v�Ȃǂ𗘗p�����l��p�����������S�������܂�܂��B�܂�255bytes����l���̗p���Ă͂����܂���B
�Eargs()���\�b�h
�n���ꂽCGI�p�����[�^�ւ̃A�N�Z�T�ł��BPerl�ł�CGI�p�����[�^�̎�舵���͂��܂��܂Ȏ�@�����݂��܂����A��v�Ȃ��̂ɂ͂��ׂđΉ����Ă��܂��B
�Erequired_root()���\�b�h
�F�T�[�o���烊�_�C���N�g�Ŗ߂��Ă���Consumer����return_url�̃v���t�B�N�X���w�肵�܂��B������X�v�[�t�B���O��ł��B
�Eclaimed_identity()���\�b�h
���[�U�[�̓��͂���URL����Net::OpenID::ClaimedIdentity�I�u�W�F�N�g��Ԃ��܂��B����URL��OpenID�ɑΉ�����URL�Ŗ����ꍇ��undef�iPerl�̖���`�l�j��Ԃ��܂��B
�Euser_setup_url()���\�b�h
checkid_immediate���[�h�ł̃A�N�Z�X�����s�����ꍇ�ɕԂ��Ă���URL�̒l��Ԃ��܂��B����URL������@�\�͔F���̂��̂�A�M�����̊m���Ɋւ��邢���Ȃ���̂��ΏۂƂȂ�܂��B
�Euser_cancel()���\�b�h
�F�T�[�o����̖߂�l�Ƃ���openid.mode��cancel�������ꍇ��true�ɂȂ�܂��B��̓I�ɂ́Acheckid_setup�ɂ���ĔF�T�[�o�Ƀ��_�C���N�g������ɁAEnd User��������Identifier��Consumer�ɋ��L���������Ȃ��ꍇ�ɁA�����̏ꍇ�u�L�����Z���v�{�^�������݂��A������������ۂɁAopenid.mode��cancel�Ƃ���Consumer�ɒʒm����܂��B
�Everified_identity()���\�b�h
�F�؍ς݂�Identifier�Ƃ���Net::OpenID::VerifiedIdentity�I�u�W�F�N�g���Ԃ���܂��Bdumb���[�h�ł�checkid_authentication�����s���܂��B
�Eerr()���\�b�h
�gerrcode: errtext�h�Ƃ����t�H�[�}�b�g�ŁA�Ō�ɋN�����G���[���e��Ԃ��܂��B
�Eerrcode()���\�b�h
�Ō�ɋN�����G���[�R�[�h���Ԃ��Ă��܂��B
�Eerrtext()���\�b�h
�Ō�ɋN�����G���[�e�L�X�g���Ԃ��Ă��܂��B
�Ejson_err()���\�b�h
�Ō�ɋN�����G���[���e��JSON�`���ŕԂ��܂��Bcheckid_immediate�̂悤��iframe�Ȃǂɂ��Ajax���g�����A�N�Z�X���s���ꍇ�ɗ��p���܂��B
�@Net::OpenID::Consumer��claimed_identity()���\�b�h�̖߂�l�Ƃ��āANet::OpenID::ClaimedIdentity�I�u�W�F�N�g���擾���܂��B���ۂ�Claimed Identifier�ł���URL��claimed_identity()���\�b�h�ɓn�����Ƃ��ɁA����URL��OpenID�Ή��ł�����̃I�u�W�F�N�g��Ԃ��܂��B���̃��W���[����API�œ��ɏd�v�Ȃ̂�check_url()���\�b�h�ł��B
�Eclaimed_url()���\�b�h
Claimed Identifier�ł���URL��Ԃ��܂��B
�Eidentity_server()���\�b�h
IdP�iIdentity Provider�j�̃G���h�|�C���gURL��Ԃ��܂��B
�Echeck_url()���\�b�h
associate�̎��s�ismart���[�h���̂݁j��checkid_immediate�܂���checkid_setup�����s���邽�߂�URL�����A�Ԃ��܂��B
�@�ȏオNet-OpenID-Consumer�f�B�X�g���r���[�V�����ŁA���[�U�[����ɗ��p�����v��API�ɂȂ�܂��B
�@���API��������Ă��܂��܂������A������������Ȃ��p���ڂ���������Ă��Ȃ��p�ꂪ�o�Ă����Ǝv���܂��B���̒��Œ��ڂ��ׂ��g�s�b�N�Ƃ��āA
���������邩�Ǝv���܂��B
�@Diffie-Hellman�����L��ALWP::UserAgent�̃T�u�N���X�Ƃ��������̂�OpenID�̃Z�L�����e�B���f���Ɋւ���g�s�b�N�ł��B�ڂ����͂܂��ʂ̋@��ŐG��邱�ƂƂ��A�����Consumer���̎������s�������ŕK���m��˂Ȃ�Ȃ��AOpenID�̓��샂�[�h�Ɋւ��Đ������Ă����܂��B
Copyright © ITmedia, Inc. All Rights Reserved.