wiki:pne-book-7
 ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Version 16 (modified by imoto, 12 years ago) (diff)

--

TOC

第7章 外部連携

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

機能連係

小窓

  • 天鳳
  • Skype

ID連携

MasterPNE

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

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

導入手順

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

mod_auth_mysqlの導入

まずは、mod_auth_mysqlの導入します。
mod_auth_mysqlとはApacheの通常のファイルベースのベーシック認証をMySQLベースに置き換える仕組みです。
インストールは比較的簡単に出来ると思います。また、最初からサーバにインストールされているいる場合もあるので一度確認してみてください。

インストール

yum install mod_auth_mysql

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

httpd.confの修正

次に、httpd.confを修正します。
今回は、SNSのニックネーム・SNSのログインパスワードを、外部認証のID・パスワードとして利用することにします。
また、http://xxx.openpne.jp のSNSをMasterとして、http://xxx.openpne.jp/trac/ のTracアプリケーションにログインするための設定をします。
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のニックネームとパスワードでログインします。

無事ログイン出来たら、OpenPNEとTracでMasterPNEを使って連携することが出来ました。

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

OpenPNE.jp ~OpenPNE公式SNS~
http://sns.openpne.jp

OpenPNE Trac
http://trac.openpne.jp

OpenPNE X WordPress?

OpenPNE X Drupal

OpenPNE X Springnote

SlavePNE

SlavePNEとは、他のシステムのアカウントを親、OpenPNEを子(Slave)として連携させる方法です。OpenPNEでは現在認証系の外部ライブラリにPEARライブラリのAuth_Containerを使っています。このSlavePNEはAuth_Containerを使っています。

XOOPS X OpenPNE

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

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

導入手順

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

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オプションの設定をします。
username,password,hostspec,databaseはxoopsのDB設定と同一にします。
xoopsのDBを参照し、table,usernamecol,passwordcolを設定します。
最後に、cryptTypeをmd5に設定します。これはXOOPSがmd5を使用しているためこの設定をしないとログインすることが出来ません。
これだけの簡単な設定で、XOOPSのユーザIDとパスワードでOpenPNEにログインすることが出来ます。

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

// IS_SLAVEPNEがtrueの場合のauthオプション
$GLOBALS['_OPENPNE_AUTH_CONFIG'] = 
array(
'storage'=>"DB",
'options'=>array(
    'dsn'         => array(
        'phptype'  => 'mysql',
        'username' => 'MySQLユーザ名',
        'password' => 'MySQLパスワード',
        'hostspec' => 'ホスト名',
        'database' => 'データベース名',
        'new_link' => true,
        ),
    'table'       => 'xoops_users',
    'usernamecol' => 'uname',
    'passwordcol' => 'pass',
    'cryptType'   => 'md5',
    ),
);

動作確認

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

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

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

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

GoogleApps X OpenPNE

GoogleAppsにはさまざまな特徴があり、大容量WebメールのGmail、カレンダーの共有が出来るGoogleカレンダー、ワードやエクセルの形式も編集出来るGoogleDocs&Spreadsheetsとさまざまなツールを使うことが出来ます。
GoogleAppsとOpenPNEを連携して利用することで、一つのアカウントでログインすることができ、社内でのアカウント管理も楽になります。また、この方法で連携したSNSにはGoogleAppsのアカウントを持ったユーザのみログイン可能なので、限定したユーザのみログインできるSNSを作ることが出来ます。
小規模の会社であれば、OpenLDAPを使っていない場合がほとんどだと思います。しかし、この様にPOP3でOpenPNEと連携することが出来ます。

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

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

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

導入手順

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

動作確認

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

Google Appsのアカウント(メールアドレス)とパスワードでOpenPNEにログインします。
OpenPNEにログインした時点で、Google Appsでの認証は通過しています。

次に、「プロフィール入力画面」が表示されるので、入力し登録を完了します。

「メールアドレス登録」が表示されるのでメールアドレスを入力し、メールを送信します。この時、Google Appsのメールアドレスを入力しておくと管理が楽になります。

入力したメールアドレスにSNSから届いたメールを開き、パスワードを入力し、登録を完了させます。
これでログインすることが出来ればGoogle AppsとOpenPNEをSlavePNEで連携させることが出来る様になりました。

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

Geeklog X OpenPNE

Geeklogはブログ機能が充実したコンテンツマネジメントシステムです。 特徴としては、拡張性・汎用性が高く、システムを簡単に拡張するプラグインシステムだけではなく、手軽に開発することが出来るアドオン開発環境が整備されています。

Geeklogは拡張性が高い汎用CMSとして普及しており、OpenPNEにはない機能があります。
BlogなどOpenPNEだけでは管理できない機能を使い、OpenPNEとID連携することでコンテンツの管理が非常に楽になります。
一つのコミュニティの中で、クローズにしたい所はOpenPNEで、オープンにしたい所はOpenPNEでといったようにコミュニティの中でオープンとクローズドを上手く使い分けることも可能です。

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

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

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

導入手順

1.OpenPNEのconfig.phpのIS_SLAVEPNE、authオプションを設定
2.Geeklogのconfig.phpを設定
3.Geeklogにユーザ登録
4.動作確認

OpenPNEの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オプションの設定をします。
ここではphptypeにmysqlを使用しています。MySQLユーザ名、MySQLパスワード、MySQLパスワード、ホスト名、データベース名は適宜読み替えてください。
tableはgl_usersを使います。usernamecolにはusersを、passwordcolにはpasswdを設定してください。
また、cryptTypeはmd5にしてください。

これでOpenPNE側の設定は終了です。

// 外部認証を使用するかどうか
define('IS_SLAVEPNE' , true);
// IS_SLAVEPNEがtrueの場合のauthオプション
$GLOBALS['_OPENPNE_AUTH_CONFIG'] =
array(
'storage'=>"DB",
'options'=>array(
    'dsn'         => array(
        'phptype'  => 'mysql',
        'username' => 'MySQLユーザ名',
        'password' => 'MySQLパスワード',
        'hostspec' => 'ホスト名',
        'database' => 'データベース名',
        'new_link' => true,
        ),
    'table'       => 'gl_users',
    'usernamecol' => 'users',
    'passwordcol' => 'passwd',
    'cryptType'   => 'md5',
    ),
);

Geeklogのconfig.phpを設定

次に、Geeklogの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にユーザ登録

Geeklogにユーザ登録します。
新規登録から、Geeklogにユーザ登録してください。

動作確認

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

OpenPNEへGeeklogに登録したユーザ名とパスワードでログインします。 ログイン出来れば、GeeklogとOpenPNEをSlavePNEで連携させることが出来る様になりました。

    
Geeklog
http://www.geeklog.net

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

OpenLDAP X OpenPNE

OpenLDAPはLDAPを実装したオープンソースのディレクトリサービスソフトウェアのことです。 LDAPの特徴から、OpenLDAPを社内システムでを使うことも多いと思います。
その様な時にOpenLDAPとOpenPNEを連携することが出来れば同じIDでログインすることが出来るので社内SNSなどSNSの導入も比較的楽に導入出来る様になります。

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

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

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

導入手順

1.config.phpのIS_SLAVEPNE、authオプションを設定
2.config.phpのsession_save_pathを設定
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にLDAPを選択し、authオプションを設定します。
下に設定の一例を挙げています。

// 外部認証を使用するかどうか
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にログインします。
新規ユーザの場合は通常のOpenPNE同様プロフィール項目などの登録が必要です。
メール承認後、LDAPのuidとpasswordでログイン出来ます。

OpenLDAP
http://www.openldap.org

コラム 自動ログイン設定

SlavePNEを使うときに、自動ログイン設定が出来ないということがあります。 自動ログイン設定を使うにはOpenPNE側で設定が必要です。 今回はその自動ログインの設定を紹介します。

config.phpのsession_save_pathを設定

OpenPNEのrootディレクトリにあるconfig.php内のsession_save_pathを設定してきます。

root/

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

自動ログインするためにセッションの設定をします。

まず、OpenPNEのrootディレクトリにあるconfig.php内のsession_save_pathを設定します。
デフォルトではsession_save_pathがコメントアウトされているので、コメントアウトをはずします。 次に、pathを設定する必要があればpathを環境に応じて設定してください。 このpathはOpenPNEが設置されている絶対アドレスにしてください。 これでセッションが保存されるようになります。

///
// セッション・クッキー設定
///

ini_set('session.gc_probability',1);
ini_set('session.gc_divisor',10000);

ini_set('session.gc_maxlifetime', 432000); // 5 days
session_save_path('/tmp');