OpenID テストキット完全版

  必要なもの



【記事ページ】 OpenID テストキット 完全版

ダウンロード

 PHP OpenID library

 cacert.pem

 
 サンプルコード


WEB テスト実行




Google でログイン



Yahoo でログイン


サンプルコード readme.txt ( 使い方 )
**************************************************
 1) 
**************************************************

http://www.janrain.com/openid-enabled

上記の URL からライブラリをダウンロードして、openid2/Auth/OpenID.php と
なるように配置します。


[openid_sample]
    common.php
    その他のファイル

[openid2]
    [Auth]
        [OpenID]
        [Yadis]
        OpenID.php


**************************************************
 2)
**************************************************

Auth/Yadis/ParanoidHTTPFetcher.php を以下のように変更します
( 2箇所ある、curl_exec($c); の直前に以下を記述 )

if ($this->isHTTPS($url)) {
    curl_setopt($c, CURLOPT_CAINFO, $GLOBALS['openid_pem']);
}

**************************************************
 3) 
**************************************************

OpenID.php のログ処理を以下のように書き換えます

    static function log($format_string)
    {
        $args = func_get_args();
        $message = call_user_func_array('sprintf', $args);
//      error_log($message);
        if ( $GLOBALS['logfile'] != "" ) {
            error_log("$message\n", 3, $GLOBALS['logfile']);
        }
    }

**************************************************
 4)
**************************************************

http://curl.haxx.se/docs/caextract.html から、cacert.pem をダウンロード
して、openid_sample フォルダ内に置きます。


**************************************************
 5) windows のみ
**************************************************

windows では、php.ini の extension=php_curl.dll と
extension=php_openssl.dll を有効にします



■著作権

このプログラムはフリーです。どうぞ自由に御使用ください。
著作権は作者である私(lightbox)が保有しています。
また、本ソフトを運用した結果については、作者は一切責任を
負えせんのでご了承ください。



Authentication and Authorization for Google APIs - Google Code

Yahoo!デベロッパーネットワーク - Yahoo! JAPANが対応しているOpenID拡張仕様について

PHP OpenID 認証 実行サンプル





  共通部品 : common.php



<?php
// *********************************************************
// デバッグ用ログファイルの位置
// ( コメントにすると、ログは出力されません )
// *********************************************************
$logfile = "./debug.log";
// *********************************************************
// 証明書の位置
// *********************************************************
$openid_pem = realpath("./cacert.pem");
// *********************************************************
// 作業ディレクトリの位置
// *********************************************************
$store_path = realpath("../") . DIRECTORY_SEPARATOR  . "_php_consumer_dir";
if (!file_exists($store_path) && !mkdir($store_path)) {
	print "保存用ディレクトリを作成できませんでした '$store_path'".
	" 書き込み権限をチェックして下さい";
	exit(0);
}

// *********************************************************
// OpenID 用 URL 文字列
// *********************************************************
$scheme = 'http';
if (isset($_SERVER['HTTPS']) and $_SERVER['HTTPS'] == 'on') {
	$scheme .= 's';
}

// 戻ってきた情報を受け取る場所
$return_to = "return.php";
$return_to = 
	sprintf("%s://%s:%s%s/$return_to",
		$scheme, $_SERVER['SERVER_NAME'],
		$_SERVER['SERVER_PORT'],
		dirname($_SERVER['PHP_SELF'])
	);

// 呼び出し元のディレクトリ
$trust_root = 
	sprintf("%s://%s:%s%s/",
		$scheme, $_SERVER['SERVER_NAME'],
		$_SERVER['SERVER_PORT'],
		dirname($_SERVER['PHP_SELF'])
	);

// *********************************************************
// HTTP ヘッダ
// *********************************************************
header( "Content-Type: text/html; Charset=shift_jis" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );

// *********************************************************
// デバッグログ開始位置
// *********************************************************
log_file("+++++++++++++++++++");
log_file("openid_pem=$openid_pem");
log_file("store_path=$store_path");
log_file("scheme=$scheme");
log_file("return_to=$return_to");
log_file("trust_root=$trust_root");

// *********************************************************
// Windows 環境とランダム要素(/dev/urandom)の対応
// *********************************************************
if ( substr( strtoupper( php_uname("s") ), 0, 7 ) == 'WINDOWS' ) {

	log_file("windowです");

	define('Auth_OpenID_RAND_SOURCE', NULL);
	if ( !extension_loaded( "curl" ) ) {
		log_file("php_curl.dll load");
//		dl("php_curl.dll"); 非推奨または定義されない関数
		exit("curl を使用できません");
	}
	if ( !extension_loaded( "openssl" ) ) {
		log_file("php_openssl.dll load");
//		dl("php_openssl.dll"); 非推奨または定義されない関数
		exit("openssl を使用できません");
	}
}
else {
	if ( @is_readable('/dev/urandom') ) {
	}
	else {
		define('Auth_OpenID_RAND_SOURCE', NULL);
	}
}

// *********************************************************
// include_path に、PHP OpenID Library の位置をセット
// *********************************************************
$path_extra = realpath("../openid2");
$path = ini_get('include_path');
$path = $path_extra . PATH_SEPARATOR . $path;
ini_set('include_path', $path);

// *********************************************************
// PHP OpenID Library ( 利用側 )
// *********************************************************
require_once "Auth/OpenID/Consumer.php";
require_once "Auth/OpenID/FileStore.php";
require_once "Auth/OpenID/SReg.php";
require_once "Auth/OpenID/PAPE.php";
require_once "Auth/OpenID/AX.php";


// *********************************************************
// デバッグログ
// *********************************************************
function log_file($message) {
	if ( $GLOBALS['logfile'] != "" ) {
		error_log("$message\n", 3, $GLOBALS['logfile']);
	}
}

?>













  infoboard   管理者用   
このエントリーをはてなブックマークに追加




SQLの窓  天気  IT用語辞典
Yahoo!ニュース  マルチ辞書
PHP マニュアル  Google URL短縮 


フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ