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

Version 14 (modified by tejimaa, 14 years ago) (diff)

--

TOC

OpenPNE公式本ノート

OpenPNE概要

OpenPNE関連サイト紹介

www

trac

sns

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

MasterPNE

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

OpenPNE X Geeklog

  • Geeklogコミュニティで現状の実装方法をヒアリング
  • OpenPNE側対応範囲を決定
  • OpenPNE側で実装
  • Geeklogコミュニティで微調整、対応

OpenPNEとGeeklogをハックしてシングルサインオンする

手順
(前提条件)
Geeklog、OpenPNEのインストール
OpenPNEのWEBサーバからGeeklogのMySQLに接続できること

1.Geeklogの設定 2.Geeklogにプログラム追加修正 3.OpenPNEの設定 4.OpenPNEにプログラム追加修正

1.Geeklogの設定

  • ヘッダメニューのアカウント情報は無効にする。
           $_CONF['menu_elements'] = array
           (
               'home',         // ホーム へのリンク
               'contribute',   // 記事の新規作成へのリンク
               'calendar',     // カレンダ表示へのリンク
               'search',       // 検索オプションへのリンク
               'stats',        // ステータス情報
               'directory',    // 記事の一覧
               //'prefs',        // アカウント情報
               'plugins'       // プラグイン {plg_menu_elements} 変数と同じ.
               // 'custom'     // CUSTOM_menuEntries 関数の返す文字列を表示.
               //(詳細はlib-custom.php参照)
           );
    
  • ユーザの新規登録を許可しない設定にする
           // ユーザの新規登録拒否 false:許可 true:拒否(管理者のみ登録可能)
           $_CONF['disable_new_user_registration'] = true;
    
  • ユーザが自分でユーザー名を変更できない設定にする
           // ユーザが自分でユーザ名を変更(1:変更できる 0:変更できない)
           $_CONF['allow_username_change'] = 0;
    
  • ユーザ自身でアカウント削除できない設定にする
               // ユーザが自分でアカウントを削除(1:削除できる 0:削除できない)
               $_CONF['allow_account_delete']  = 0;
    
  • ユーザ名表示の際に,本名を表示する設定にする
           (1:本名表示 0:ユーザ名表示)
           $_CONF['show_fullname'] = 1;
    
  • ブロック ユーザ情報は無効にする。
  • Admin ユーザのユーザ名をメールアドレスにする
  • ブロックにphpblock_sns を登録する(ログイン用)

2.Geeklogにプログラム追加修正

  • public_html/admin/auth.inc.php (修正)
  • public_html/layout/thema/users_add/*.* (追加)
  • public_html/sns/ OpenPNEと同じフォルダへ
    • public_html/sns_users/login.php (追加)
    • public_html/sns_users/login2.php (追加)
    • public_html/sns_users/users_add.php (追加)
  • private/geeklog/plugins/users_add/config.php (追加)
    • OPENPNE_DIR ENCRYPT_KEY の設定が必要
  • private/geeklog/system/custom/phpblock_sns.php (追加)
    • lib_custom.phpに登録のこと (修正)

3.OpenPNEの設定
OpenPNEインストール後の管理画面から設定を行う(ログイン→SNS設定)

  • 外部ログインページURL:設定する
  • 通常ログインページ表示設定:外部ログインページへリダイレクトする

4.OpenPNEにプログラム追加修正

  • Geeklogサイトのメールアドレス、パスワード、本名更新処理追加
    • private/sns/webapp/lib/db/member.php (修正)
    • Geelog $_DB_table_prefix を変更している場合は修正が必要
  • Geeklog渡す情報クッキー書き込み
    • private/sns/webapp/lib/OpenPNE/Auth.php (修正)
  • メールアドレス変更後の画面遷移変更
    • private/sns/webapp/modules/pc/do/h_config1.php (修正)
  • ログアウト後の画面遷移変更
    • private/sns/webapp/modules/pc/do/inc_page_header_logout.php (修正)
  • Geeklogサイトからログアウトを実行する
    • private/sns/webapp/modules/pc/do/o_logout.php (追加)

メリット、外部認証との違い

  1. ユーザはOpenPNEだけの登録処理になる
  2. OpenPNEを招待制にできる。Open制も可
  3. メールアドレス、ニックネーム(Geeklogでは本名)が一元管理できる

デメリット

  • シングルサインオンはPCのみ(携帯はOpenPNEのみログイン)

OpenPNEとGeeklogをハックしてシングルサインオンする例1http://wiki.geeklog.jp/index.php/SSO1

OpenPNE SSOプロジェクトhttp://biz.geeklog.jp/?m=pc&a=page_c_home&target_c_commu_id=14

OpenPNE X TRAC

OpenPNE X GoogleApps

SlavePNE

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

OpenLDAP X OpenPNE

GoogleApps X OpenPNE

手順

(前提条件)Google Appsへの申し込み、OpenPNEのインストール
1.config.php内のIS_SLAVEPNE、オプションを設定
2.Google Appsのアカウント設定
3.Gmailのアカウント(メールアドレス)とパスワードでOpenPNEにログインする

1.config.php内のIS_SLAVEPNE、オプションを設定 IS_SLAVEPNEをtrueに設定する。

optionsの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'
    ),
);


2.Google Appsのアカウント設定

OpenPNEにログインしたいアカウント(メールアドレス)で、Google Appsにログインする。

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

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

「プロフィール入力画面」が表示されるので、入力し登録。

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

上で入力したメールアドレスにSNSから届いたメールを開き、パスワードを入力し、登録を完了させる。(このパスワードはほとんど使うことがないので、Google Appsと同じパスワードを入力しておくと管理が楽になる)
これで、すべての登録が完了。

※この設定をしたSNSに入ることが出来るのは、Google Appsのアカウントを持ったユーザだけになる。

かなり限定したユーザ(このドメインを使っているユーザ)のみログインできるSNSを作ることが出来る。

NetCommons? X OpenPNE

Geeklog X OpenPNE

OpenPNEの外部認証としてGeeklogを利用する

手順
(前提条件)
Geeklog、OpenPNEのインストール
OpenPNEのWEBサーバからGeeklogのMySQLに接続できること

1.OpenPNEのconfig.php内のIS_SLAVEPNE、オプションを設定 2.Geeklogのconfig.phpを設定する 3.Geeklogにユーザ登録する 4.OpenPNEへGeeklogに登録したユーザ名とパスワードでログインする

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

IS_SLAVEPNEをtrueにして、optionsを設定する。

// 外部認証を使用するかどうか
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' => 'localhost',
        'database' => '☆データベース名☆',
        'new_link' => true,
        ),
    'table'       => 'gl_users',
    'usernamecol' => 'users',
    'passwordcol' => 'passwd',
    'cryptType'   => 'md5',
    ),
);

2.Geeklogのconfig.phpを設定する
config.php ユーザ名を変更できない設定にする。

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

3.Geeklogにユーザ登録する
新規登録から、Geeklogにユーザ登録する

4.OpenPNEへGeeklogに登録したユーザ名とパスワードでログインする

※ パスワードの変更はGeeklogでおこなう。
※ メールアドレス変更は、Geeklog、OpnePNEそれぞれでおこなう。

メリット

  1. 標準機能なので、すぐに利用できる。

デメリット

  1. OpenPNEを招待制にできない。
  2. GeekloとOpenPNE、それぞれ個別にユーザ登録が必要。
  3. メールアドレスが二重管理になる。
  4. ニックネーム(OpenPNE)=ユーザ名(Geeklog)ではないのでわかりにくい

OpenPNE1http://wiki.geeklog.jp/index.php/OpenPNE1

※OpenPNE開発版の内容を入れることで、完成されたID連携の機構を紹介したい

外部アプリ連携時のデザイン整合性について

小窓機能ガイド

メモ

  • 分野ごとの事例紹介
  • インストールはいらない
  • 携帯投稿の正式な対応方法
    • 正規表現を使わないで実現できる方法
  • 次バージョンに思い切り振った記事が読みたい
  • 小窓機能一覧、設定例、PNEの強さの部分
  • 高負荷のSNSをどう運営するか?
    • XX台でXXPV行けますよ。
  • チューニング
  • 今後どうやってDB分散に対応していくか
  • 具体例満載でお願い
  • どうすれば盛り上がるか?
    • 良いキーワード、悪いキーワードをコラム的にかな?
  • 本を読めば使えるよ。
  • 一章見直してください。

WikiInclude(DIRECTORYNAVI)?

Attachments (3)

Download all attachments as: .zip