第7章 外部連携

外部アプリとの連携でOpenPNEはここまで良くなる

OpenPNEは人と人とのつながりを表現するソフトウエアです。 OpenPNE本体に多くの機能を作らなくても外部のサービスと連携することで、OpenPNEの人と人とを表現するという基本機能がより活きることがあります。 今回は、外部のサービスと連携する手段の一つとしてID連携を中心に外部連携を紹介していきます。

MasterPNE

MasterPNEとは

MasterPNEとは、OpenPNEのユーザーアカウントを親(Master)として、外部のアプリケーションを連携させる方法です。
MasterPNEに対応するには、OpenPNE本体ではなく、外部システム側がMasterPNEの提供する認証機構をサポートしている必要があります。
ですので、今後OpenPNEでは、より多くの外部システムと連動するため、複数の認証プロトコルをサポートしていく予定です。

http://sc.pne.jp/200801081910.png

OpenPNEはOpenIDに対応しているので、OpenIDを使用した連携も解説します。解説するOpenIDとの連携を参考にするとOpenIDに対応した様々なアプリケーションと連携することができます。

OpenPNE X Trac

TracはPythonにより実装されているソフトウェアのプロジェクト管理とバグ追跡のためのツールです。現在、多くのオープンソースプロジェクトで活用されています。 OpenPNEプロジェクトでも現在Tracを利用してプロジェクト管理やバグ追跡をしています。

OpenPNEとTracを連携させることで、SNSのユーザーだけTracにログインできるということが可能になります。

現在、OpenPNEの公式SNSとOpenPNE公式TracはこのOpenPNEとTracのMasterPNEで動いています。
OpenPNE公式SNS内の「プロフィール変更」の欄に「TRACログインID」というTracのログインIDを入力する欄があるので、この「TRACログインID」にログインIDを入力すれば、このTRACログインIDとOpenPNE公式SNSのパスワードでOpenPNE公式Tracにログインできるようになります。

前提条件としてOpenPNE、Trac(dagのyumインストール)がインストールされているものとします。

なお、ここではTrac自体のインストール方法や詳細については解説していません。 それについての詳細はTracのドキュメントもしくはWebサイトを参照してください。

https://trac.openpne.jp/svn/prj/pne-book/pne-book-7/trac.png

The Trac Project
http://trac.edgewall.org

導入手順

1.mod_auth_mysqlの導入
2.httpd.confの修正
3.動作確認

mod_auth_mysqlの導入

mod_auth_mysqlとはApacheに備わっている認証スキームを通常のファイルベースからMySQLベースに置き換える仕組みです。 インストールは比較的簡単に出来ると思います。また、最初からサーバにインストールされているいる場合もあります。 Redhat系のOSを利用している場合は、yum list installed 等のコマンドで

mod_auth_mysql

のパッケージがインストールされているか確認してください。

インストール

yum install mod_auth_mysql

※RedhatEL(CentOS)には標準で搭載されています。

httpd.confの修正

次に、httpd.confを修正します。
今回は、SNSのニックネーム・SNSのログインパスワードを、Tracにログインする際のID・パスワードとして利用することにします。

また、http://xxx.openpne.jpをMasterのSNSの設置場所都市、http://xxx.openpne.jp/trac/に設置したTracにログインするための設定をします。[[BR]] 設定ファイル内の【AuthMySQLUser】、【AuthMySQLPassword】、【AuthMySQLDB】は適宜各自の設定に読み替えてください。

AuthMySQLNameFieldでログインID用のフィールドを指定してください。今回はSNSのニックネームを使用するのでnicknameとしています。
AuthMySQLPasswordFieldでパスワード用のフィールドを指定しています。

 <Location /trac/>
 AuthName "OpenPNE"
 AuthType Basic
 AuthMySQLEnable on
 AuthMySQLUser *****
 AuthMySQLPassword **********
 AuthMySQLDB sns_openpne_jp
 AuthMySQLNameField nickname
 AuthMySQLPasswordField hashed_password
 AuthMySQLUserTable "c_member, c_member_secure"
 AuthMySQLUserCondition "c_member.c_member_id=c_member_secure.c_member_id"
 AuthMySQLPwEncryption md5
 Require valid-user
</Location>

httpd.confの修正が終わったら、Apacheを再起動して設定を有効にします。

# /usr/local/apache/bin/apachectl restart

動作確認

それでは動作確認してみましょう。
通常通り、SNSのユーザー登録をします。
次に、Trac(認証サイト)に移動しSNSのニックネームとパスワードでログインします。

[ログイン後キャプチャ画面の挿入]

上記画面のようにTracにログインできたら、OpenPNEとTracの連携成功です。

それでは、次にOpenIDを利用してMasterPNEを実現していきましょう。

OpenIDとは?

OpenIDは、Webサイトを超えて認証システムを構築できるシステムです。

OpenPNEにおけるOpenIDの連携には二つの方法があります。

「OpenPNEがOpenIDのID発行者(プロバイダ)になる」と「OpenIDを使ってOpenPNEにログインできるようにする(コンスーマ)」です。今回はOpenPNEのプロバイダ機能を利用した連携方法を紹介します。

OpenIDは、URLの形式で発行されます。このURLを取得していると、OpenIDに対応しているすべてのサイトにひとつのIDでログインすることができます。

ここでは、OpenIDに対応をしているオープンソースのソフトウェアを使って、OpenPNEとの連携方法を紹介していきます。

https://trac.openpne.jp/svn/prj/pne-book/pne-book-7/OpenID.png

SNSでのOpenIDの設定

まず、OpenIDでログインするためのURLをSNSで発行するためには、SNSで設定が必要になります。
SNSのrootディレクトリにあるconfig.phpにある【IS_OPENID_PROVIDER】をtrueにします。
以上の設定で、SNSがOpenIDのURLを発行することが出来ました。

config.php


//OpenIDのプロバイダとなるかどうか 
define('IS_OPENID_PROVIDER', true); 

//OpenIDの乱数用定義 
define('Auth_OpenID_RAND_SOURCE', NULL); 

SNSで発行されるOpenIDのURLは以下のような形式となります。

http://hogehoge.jp/?m=openid&a=page_home&id={ユーザーのID番号}

OpenPNE X WordPress?

WordPress?は、オープンソースのブログ構築用ソフトウェアです。
WordPress?には様々なテーマやプラグインが存在し、これらを導入することにより、オリジナルのブログを構築できます。

WordPress?はOpenIDのユーザーに様々な権限レベルを設定することができるという大きな特徴を持っています。この特徴を活かして、SNSとWordPress?連携させて、SNS参加者だけが投稿可能なSNS参加者専用共同ブログを作成することができます。

前提条件としてWordPress?、OpenPNEがインストールされているものとします。

なお、ここではWordPress?自体のインストール方法や詳細については解説していません。 それについての詳細はWordPress?のドキュメントもしくはWebサイトを参照してください

https://trac.openpne.jp/svn/prj/pne-book/pne-book-7/WordPress.png

WordPress(英語)
http://wordpress.org/

WordPress Japan
http://wordpress.xwd.jp/

導入手順

1.WordPress?に導入するプラグインの入手
2.WP-OpenIDのインストールと設定
3.動作確認

1.WordPress?に導入するプラグインの入手

今回はWP-OpenIDというプラグインを使用します。
まずこのプラグインを入手しましょう。WP-OpenIDのダウンロードページからダウンロードします。

https://trac.openpne.jp/svn/prj/pne-book/pne-book-7/WP-OpenID.png

WP-OpenID ダウンロードページ
http://wordpress.org/extend/plugins/openid/
 

2. WP-OpenIDのインストールと設定

まず、先程ダウンロードしたプラグインを解凍します。
以下はダウンロードしたプラグインを解凍したopenidディレクトリの構成です。

openidディレクトリ

Auth/
files/
Log/
Tests/
core.php
interface.php
logic.php
OpenIDLog.php
readme.txt
screenshot-1.png
screenshot-2.png
screenshot-3.png
store.php

解凍してできたopenidディレクトリをすべてWordPress?のディレクトリ内の wp-content/plugins/ 以下にアップロードします。

wp-admin/
wp-content/
 languages/
 plugins/
  akismet/
  openid/
   Auth/
   files/
   Log/
   Tests/
   core.php
   interface.php
   logic.php
   OpenIDLog.php
   readme.txt
   screenshot-1.png
   screenshot-2.png
   screenshot-3.png
   store.php
  hello.php

themes/
wp-includes/
index.php
license.txt
readme.html
wp-app.php
wp-atom.php

次に、WP-OpenIDプラグインを有効にします。
ここからはWebブラウザ上からの操作となります。
まず設置しているWordPress?にアクセスし、管理者アカウントで管理画面にログインします。

http://ookura.pne.jp/images/wordpress/2_plugin_install/2-1.bmp

次にプラグインタブ内のプラグイン管理にWP-OpenIDモジュールが表示されていることを確認して「使用する」をクリックし、有効化します。これでプラグインの有効化は完了です。

http://ookura.pne.jp/images/wordpress/2_plugin_install/2-2.bmp

次に、各種設定を行います。
設定タブ内の一般設定タブを選択し、メンバーシップにある「誰でもユーザー登録ができるようにする」と「ユーザー登録してログインしたユーザーのみコメントをつけられるようにする」の二つのチェックボックスににチェックを入れ、「設定更新」 をクリックして設定を反映させます。

http://ookura.pne.jp/images/wordpress/2_plugin_install/3-1.bmp 次に、設定タブ内のディスカッションを選択し、コメント表示条件を以下のように設定します。

http://ookura.pne.jp/images/wordpress/2_plugin_install/3-1-1.bmp

作業が完了したら「設定更新」をクリックして設定を反映させます。

最後に、同じく設定タブ内にあるWP-OpenIDを選択し、「Enable OpenID comment auto-approval」と「Add OpenID text to the WordPress? post comment form.」の二つのチェックボックスにチェックを入れ、「Update options」 をクリックして設定を反映させましょう。

http://ookura.pne.jp/images/wordpress/2_plugin_install/3-2.bmp 以上で設定は完了です。

3. 動作確認

ここでの動作確認は、「SNSで発行されたOpenIDのURLでWordPress?のブログにコメントを書き込むことができることを確かめる動作確認」と、「SNSで発行されたOpenIDのURLでブログに投稿することができることを確かめる動作確認」を行います。

  1. WordPress?にコメントを書き込む
    実際にSNSのユーザーがSNSで発行されたURLでコメントが投稿できるか動作確認してみましょう。まずコメントしたいブログ記事のページにいきます。

http://ookura.pne.jp/images/wordpress/3_action_check/1-1.bmp

下部に「コメントを投稿するにはログインしてください。」と書いてあるので「ログイン」をクリックして、ログインフォームを表示します。

http://ookura.pne.jp/images/wordpress/3_action_check/1-2.bmp

表示されたログインフォームには設定する前にはなかったOpenIDのログインフォームが表示されます。この「OpenID url:」というフォームにSNSから発行されたOpenIDのURLを入力することでログインすることができます。

ログインするとコメントを投稿したいブログ記事と共にコメント投稿フォームが出てきます。あとはコメントを入力し、通常通り投稿することができれば、OpenPNEとWordPress?の連携成功です。
OpenIDで投稿したコメントには名前の横にOpenIDのロゴが表示されます。

http://ookura.pne.jp/images/wordpress/3_action_check/1-3.bmp

  1. WordPress?にブログの記事を投稿する

次に、WordPress?にブログの記事を投稿する動作確認を行います。しかし、OpenIDを発行された段階ではアカウントの権限レベルが設定されていないので、まずは管理者がブログ投稿者に「作成者」の権限を与える必要があります。それではまず、管理者がOpenIDでログインしたユーザに「作成者」の権限を与える方法から見ていきましょう。

WordPress?にOpenIDで一度ログインしたユーザは全てWordpressにアカウント登録されています。

そこで、WordPress?に登録されたユーザのアカウント権限レベルを「作成者」に変更して、ユーザがブログ記事を投稿できるように設定します。

まず管理者のアカウントで管理ページにログインします。
ユーザータブをクリックすると、ユーザの一覧が表示されます。

http://ookura.pne.jp/images/wordpress/3_action_check/2-1.bmp

ここで、権限レベルを変更したいユーザにチェックを入れて、「選択したユーザーの更新」にある権限レベルを指定しましょう。今回はユーザの権限レベルを「作成者」 にします。

「一括更新」のボタンをクリックしてユーザーの権限レベルの変更します。
以上で、権限レベルの変更は完了しました。

次に、ユーザーの権限レベルが「作成者」になっているか確かめます。
この時、管理者のアカウントで管理画面にログインしている場合は一度ログアウトしてください。

ログイン画面でOpenID入力フォームに、権限レベルを変更したユーザーのOpenIDを入力してログインしてみましょう。すると、「ダッシュボード」や「作成」などの作成者に必要なタブが現れてブログが投稿できるようになります。

管理者のアカウントには表示される「プラグイン」 や「リンク」 などのタブが、作成者権限のユーザーには表示されません。

http://ookura.pne.jp/images/wordpress/3_action_check/2-2.bmp

最後に、WordPress?のブログ記事を書いて確認しましょう。管理画面の中にある「作成」タブから記事を書くことができます。

http://ookura.pne.jp/images/wordpress/3_action_check/3-1.bmp

OpenPNE X Drupal

Drupalとは、個人のブログから企業のサイトまで幅広く利用することができるCMS(Content Management System)です。様々なモジュールをアプリケーションに追加することによって、掲示板など様々なコンテンツを提供できることができます。

OpenPNEは比較的クローズなコミュニティサイトとして運営していくことが多いと思われますが、外部にも情報を発信したいという場合もあります。 そこで、Drupalを用いて、SNS内の外部向けのサイトを設置することで、既に運営されているSNSのコンセプトを非会員の人にも、より理解してもらえると同時に、更なる会員の増加が期待できます。WordPress?でも同様のことは出来ますが、DrupalはWordPress?以上にユーザーの権限レベルを詳細に設定できるという特徴があります。

前提条件としてDrupal、OpenPNEがインストールされているものとします。 なお、ここではWordPress?自体のインストール方法や詳細については解説していません。 それについての詳細はWordPress?のドキュメントもしくはWebサイトを参照してください

https://trac.openpne.jp/svn/prj/pne-book/pne-book-7/Drupal.png

Drupal 日本サイト 
http://drupal.jp/
    
Drupal(英語)
http://drupal.org/

導入手順

1.DrupalでOpenIDモジュールを有効にする
2.OpenIDでログインするSNSユーザーの権限を設定
3.動作確認

DrupalでOpenIDモジュールを有効にする

まず、管理者のアカウントでDrupalにログインします。左側のナビゲーションから 「Administrator」 → 「Site Building」 → 「Modules」 の順にクリックし、モジュールの一覧を表示します。

http://ookura.pne.jp/images/drupal/oid_settings/1-1.bmp

モジュール一覧からOpenIDにチェックを入れ、最下部にある 「Save configuration」 をクリックし、OpenIDモジュールを有効にします。

http://ookura.pne.jp/images/drupal/oid_settings/1-2.bmp

以上で設定は完了しました。一旦ログアウトし、OpenIDでログインができるかを確認してみましょう。 ログイン画面で 「Log in using OpenID」 をクリックするとOpenID入力フォームが出てくるので、OpenIDを入力して、ログインしてみましょう。

http://ookura.pne.jp/images/drupal/oid_settings/1-4.bmp

ちなみに、初回ログイン時にDrupalにSNSのニックネームが登録されます。 つまり、SNSでニックネームを変更した場合Drupalと同期することができないので、変更したい場合はDrupalで設定する必要があります。

OpenIDでログインするSNSユーザーの権限を設定

初期設定では、コメントなどの投稿権限は許可されていますが、サイトの管理まではできません。そこで、今回はOpenIDでログインしたSNSユーザーにサイトの管理権限を付与してみましょう。

まず、グループの権限設定を作成します。Drupalではこの権限設定をDrupalに登録しているユーザーに付与することで、グループに応じてコンテンツを表示させたり、一部の管理機能を許可させたりすることができます。
管理者のアカウントでログインし、左側のナビから「Administer」 → 「User management」 → 「Roles」を開きます。初期の状態では「anonymous user」と「authenticated user」の二つの設定があります。下部に新規に作成する権限設定の名前を登録するフォームがあるので、名前を入力して「Add role」ボタンをクリックします。

今回はサイトのレイアウトが編集できる権限設定を作ります。「OpenID - Designer」というグループ名で登録しましょう。

http://ookura.pne.jp/images/drupal/oid_settings/2-1.bmp

登録されたのを確認したら、名前の横にある「edit permissions」をクリックし、Drupal内の各機能の権限を設定していきます。

今回はDrupalのデザインが編集できる権限設定を作ります。以下のようにチェックをつけていきましょう。

http://ookura.pne.jp/images/drupal/oid_settings/2-2.bmp

最後に「Save permissions」をクリックして、グループの権限設定を保存します。
次に、Drupalに登録されているSNSユーザーに、先程作ったグループの権限設定を付与します。

http://ookura.pne.jp/images/drupal/oid_settings/2-3.bmp

「Administer」 → 「User management」 → 「Users」に、Drupalに登録された全てのユーザーが表示されます。Rolesの列に何も表記のないユーザーは初期グループの「authenticated user」に属しています。

権限設定を変更したいユーザーにチェックマークをつけて、「Update options」から「Add a role to the selected users」に、先程作成した「OpenID - Designer」があるので選択し、「Update」をクリックします。
以上で設定は完了です。次に動作確認に移ります。一旦管理者アカウントからログアウトしておきましょう。

動作確認

  1. OpenIDでログインするユーザーの権限設定を確認する
    DrupalにOpenIDでログインし、権限設定を変更したユーザーがサイトの編集を行えるか確認していきます。

まず、Drupalに権限設定を変更したOpenIDでログインします。
左側のナビに"Administer"が現れていれば設定に成功しています。実際にサイトを編集してみましょう。

http://ookura.pne.jp/images/drupal/check_system/1-1.bmp

  1. ホームに表示されるコンテンツの構成を変更する
    Drupalに表示されるコンテンツの構成を変更します。「Administer」→「Site building」→「Blocks」から変更ができます。

http://ookura.pne.jp/images/drupal/check_system/2-1.bmp

変更を施したらホームに戻って確認して、作業は完了です。

http://ookura.pne.jp/images/drupal/check_system/2-2.bmp

SlavePNE

SlavePNEとは

SlavePNEとは、他のシステムのアカウントを親、OpenPNEを子(Slave)として連携させる方法です。

http://sc.pne.jp/200801081913.png

OpenPNEでは現在SlavePNEを実現させるための外部ライブラリに、PEARライブラリのAuth_Containerを使っています。このAuth_Containerがサポートするシステムであれば、OpenPNEと連携させることが出来ます。

http://sc.pne.jp/200712182052.png

[対応リスト]

XOOPS X OpenPNE

XOOPSは、コミュニティサイト構築用ソフトウェアです。 このソフトウェアを使用することにより、コミュニティサイトを手軽に作成することが出来ます。

XOOPSとOpenPNEを連携することで、現在XOOPSのコミュニティを運営しているが新しくSNSの機能を追加したいという場合でも、簡単に同じアカウントでログインすることが出来ます。
XOOPSは多くのモジュールが提供されているので、OpenPNEだけでは足りない機能をXOOPSで補うこともできます。
前提条件としてXOOPS、OpenPNEがインストールされているものとします。

なお、ここではXOOPS自体のインストール方法や詳細については解説していません。 それについての詳細はXOOPSのドキュメントもしくはWebサイトを参照してください。

https://trac.openpne.jp/svn/prj/pne-book/pne-book-7/XOOPS.png

XOOPS Project
http://www.xoops.org/

XOOPSCube日本サイト
http://xoopscube.jp/

導入手順

1.config.phpのIS_SLAVEPNE、authオプションを設定
2.動作確認

config.phpのIS_SLAVEPNE、authオプションを設定

まず、SNSのrootディレクトリにあるconfig.phpのIS_SLAVEPNEとauthオプションを設定します。

root/

 bin
 lib
 public_html
 setup
 var
 webapp
 webapp_biz
 webapp_ext
 config.php
 LICENSE

【IS_SLAVEPNE】をtrueにします。

次に、authオプションの設定をします。
【username】、【password】、【hostspec】、【database】はXOOPSのDB設定と同一にします。
XOOPSのDB構造を参照し、【table】、【usernamecol】、【passwordcol】を設定します。

最後に、【cryptType】をmd5に設定します。これはXOOPSがmd5を使用しているためこの設定をしなければ、ログインすることが出来ません。
これだけの簡単な設定で、XOOPSのユーザIDとパスワードでSNSにログインすることが出来ます。

// 外部認証を使用するかどうか
define('IS_SLAVEPNE' , true);

// IS_SLAVEPNEがtrueの場合のauthオプション
$GLOBALS['_OPENPNE_AUTH_CONFIG'] = 
array(
'storage'=>"DB",
'options'=>array(
    'dsn'         => array(
        'phptype'  => 'mysql',
        'username' => 'mysql_username',
        'password' => 'mysql_password',
        'hostspec' => 'example.hogehoge.jp',
        'database' => 'exampl',
        'new_link' => true,
        ),
    'table'       => 'xoops_users',
    'usernamecol' => 'uname',
    'passwordcol' => 'pass',
    'cryptType'   => 'md5',
    ),
);

動作確認

それでは動作確認してみましょう。

XOOPSのユーザIDとパスワードでSNSにログインします。
通常通りSNSにログインしてください。
新規ユーザの場合は通常のSNS同様プロフィール項目などの登録が必要です。
SNSにログインできたら、OpenPNEとXOOPSの連携成功です。

GoogleApps X OpenPNE

GoogleAppsにはさまざまな機能があり、大容量WebメールのGmail、カレンダーが共有できるGoogleカレンダー、ワードやエクセルの形式も編集できるGoogleDocs?&Spreadsheetsとさまざまなツールを使うことができます。

GoogleAppsとOpenPNEを連携して利用することで、一つのアカウントでログインすることができ、社内でのアカウント管理が楽になります。また、この方法で連携したSNSにはGoogleAppsのアカウントを持ったユーザだけがログイン可能なので、限定したユーザでSNSを作ることができます。

前提条件としてGoogle Appsへの申し込み、OpenPNEのインストールさているものとします。

なお、ここではGoogle Apps自体の登録やサービスの詳細については解説していません。 詳細はGoogle AppsのWebサイトを参照してください。

https://trac.openpne.jp/svn/prj/pne-book/pne-book-7/GoogleApps.png

GoogleApps
https://www.google.com/a/

導入手順

1.config.phpのIS_SLAVEPNE、authオプションを設定
2.Google Appsのアカウント設定
3.動作確認

config.phpのIS_SLAVEPNE、authオプションを設定

まず、OpenPNEのrootディレクトリにあるconfig.phpのIS_SLAVEPNEとauthオプションを設定します。

root/

 bin
 lib
 public_html
 setup
 var
 webapp
 webapp_biz
 webapp_ext
 config.php
 LICENSE

【IS_SLAVEPNE】をtrueにします。
authオプションの【storage】をPOP3、【host】をssl://pop.gmail.comに、【port】を995に設定します。

// 外部認証を使用するかどうか
define('IS_SLAVEPNE' , true);

// IS_SLAVEPNEがtrueの場合のauthオプション
$GLOBALS['_OPENPNE_AUTH_CONFIG'] = 
array(
'storage'=>"POP3",
'options'=>array(
    'host' => 'ssl://pop.gmail.com',
    'port' => '995'
    ),
);

Google Appsのアカウント設定

次に、Google Apps内でアカウント設定を行います。この設定を行わないと、ログインできません。

では、まずOpenPNEにログインしたいアカウント(メールアドレス)で、Google Appsにログインします。
右上の「設定」から「メール転送とPOP設定」に遷移すると、「POPのダウンロード」設定が、「1.ステータス:POPは無効になっています」となっており、POPが無効になっているので、すぐ下にある「すべてのメールでPOPを有効にする」というラジオボタンを選択し、POPを有効にして変更を保存します。

以上で設定は終了です。

https://trac.openpne.jp/svn/prj/pne-book/pne-book-7/GoogleApps_pop.png

動作確認

それでは動作確認してみましょう。

GoogleAppsのアカウント(メールアドレス)とパスワードでSNSにログインします。
通常通りSNSにログインしてください。
新規ユーザの場合は通常のSNS同様プロフィール項目などの登録が必要です。
SNSにログインできたら、OpenPNEとGoogleAppsの連携成功です。

Geeklog X OpenPNE

Geeklogはブログ機能が充実したコンテンツマネジメントシステムです。 特徴としては、拡張性・汎用性が高く、システムを簡単に拡張することができるプラグインシステムを搭載しています。

GeeklogはBlogなど外部に公開するコンテンツを管理するシステムが充実しているため、OpenPNEと連携することにより、OpenPNEにもコンテンツを外部に公開する機能を充実させることができます。

前提条件としてGeeklog、OpenPNEがインストールされているものとします。
また、OpenPNEのWEBサーバからGeeklogのMySQLに接続できる必要があります。

なお、ここではGeeklog自体のインストール方法や詳細については解説していません。 それについての詳細はGeeklogのドキュメントもしくはWebサイトを参照してください。

https://trac.openpne.jp/svn/prj/pne-book/pne-book-7/Geeklog.png

    
Geeklog
http://www.geeklog.net

Geeklog日本公式サイト
http://www.geeklog.jp

導入手順

1.config.phpのIS_SLAVEPNE、authオプションを設定
2.Geeklogのconfig.phpを設定
3.動作確認

config.phpのIS_SLAVEPNE、authオプションを設定

まず、SNSのrootディレクトリにあるconfig.phpのIS_SLAVEPNEとauthオプションを設定します。

root/

 bin
 lib
 public_html
 setup
 var
 webapp
 webapp_biz
 webapp_ext
 config.php
 LICENSE

【IS_SLAVEPNE】をtrueにします。
次に、authオプションの設定をします。
設定ファイル内の【phptype】、【username】、【password】、【hostspec】、【database】は適宜各自の設定に読み替えてください。

【table】、【usernamecol】、【passwordcol】、【cryptType】はgl_users、users、passwd、md5とします。

以上でSNSの設定は終了です。

// 外部認証を使用するかどうか
define('IS_SLAVEPNE' , true);
// IS_SLAVEPNEがtrueの場合のauthオプション
$GLOBALS['_OPENPNE_AUTH_CONFIG'] =
array(
'storage'=>"DB",
'options'=>array(
    'dsn'         => array(
        'phptype'  => 'mysql',
        'username' => 'mysql_username',
        'password' => 'mysql_password',
        'hostspec' => 'example.hogehoge.jp',
        'database' => 'example',
        'new_link' => true,
        ),
    'table'       => 'gl_users',
    'usernamecol' => 'users',
    'passwordcol' => 'passwd',
    'cryptType'   => 'md5',
    ),
);

Geeklogのconfig.phpを設定

次に、Geeklogのrootディレクトリにあるconfig.phpを設定します。

root/

 backups
 data
 language
 logs
 plugins
 public_html
 sql
 system
 config.php
 emailgeeklogstories
 INSTALL
 readme
 

config.phpの設定でユーザが自分でユーザ名を変更できないようにします。

// ユーザが自分でユーザ名を変更(1:変更できる 0:変更できない)
$_CONF['allow_username_change'] = 0;

動作確認

それでは動作確認してみましょう。

GeeklogのユーザIDとパスワードでSNSにログインします。
通常通りSNSにログインしてください。
新規ユーザの場合は通常のSNS同様プロフィール項目などの登録が必要です。
SNSにログインできたら、OpenPNEとGeeklogの連携成功です。

OpenLDAP X OpenPNE

OpenLDAPはLDAPを実装したオープンソースのディレクトリサービスソフトウェアのことです。 OpenLDAPには強力なセキュリティシステムがあるなどの特徴から、OpenLDAPを社内システムで使用することがあります。
その様な時にOpenLDAPとOpenPNEを連携することができれば同じIDでログインすることができるので社内SNSの導入が容易になります。

前提条件としてLDAPに対応したアプリケーション、OpenPNEがインストールされているものとします。

なお、ここではOpenLDAP自体のインストール方法や詳細については解説していません。 それについての詳細はOpenLDAPのドキュメントもしくはWebサイトを参照してください。

https://trac.openpne.jp/svn/prj/pne-book/pne-book-7/OpenLDAP.png

OpenLDAP
http://www.openldap.org

導入手順

1.config.phpのIS_SLAVEPNE、authオプションを設定
2.config.phpのsession_save_pathを設定
3.動作確認

config.phpのIS_SLAVEPNE、authオプションを設定

まず、SNSのrootディレクトリにあるconfig.phpのIS_SLAVEPNEとauthオプションを設定します。

root/

 bin
 lib
 public_html
 setup
 var
 webapp
 webapp_biz
 webapp_ext
 config.php
 LICENSE

【IS_SLAVEPNE】をtrueにします。
次に、authオプションの設定をします。
【storage】にLDAPを選択し、authオプションを設定します。
【url】、【basedn】、【userattr】は適宜各自の設定に読み替えてください。

// 外部認証を使用するかどうか
define('IS_SLAVEPNE' , false);

// IS_SLAVEPNEがtrueの場合のauthオプション
$GLOBALS['_OPENPNE_AUTH_CONFIG'] = 
array(
    'storage'=>"LDAP",
    'options'=>array(
        'url' => 'ldap://192.168.0.1',
        'basedn' => 'dc=example,dc=com',
        'userattr' => 'uid'
    ),

);

動作確認

それでは動作確認してみましょう。

LDAPのuidとpasswordでOpenPNEにログインします。
通常通りSNSにログインしてください。
新規ユーザの場合は通常のSNS同様プロフィール項目などの登録が必要です。
SNSにログインできたら、OpenPNEとOpenLDAPの連携成功です。