SSO1

出典: GeeklogJpWiki

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

目次

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

GeeklogOpenPNE連携テストサイト

前提条件

  1. OpenPNEのGeeklogのは同一ドメイン、データベースは共通

概要

  1. OpenPNEに登録する。招待制、Open制どちらでも可。
  2. OpenPNE初回ログイン時に、Geeklogに自動的にユーザ登録される。
  3. OpenPNEログインと同時にGeeklogにログインする。
  4. メールアドレス、パスワード、ニックネーム(Geeklogでは本名に充当)はOpenPNEで変更するとGeeklogでは自動更新する。
    プロフィールに関する機能はOpenPNEを使う
  5. 共通のキー:OpenPNEのregist_address(登録時メールアドレス)=Geeklogのusername(ユーザ名)

設定方法

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 を登録する(ログイン用)

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に登録のこと (修正)

OpenPNEの設定

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

OpenPNEをハック

OpenPNE (2.10.1)

  • 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では本名)が一元管理できる

デメリット

  1. 初期導入が煩わしい
  2. シングルサインオンはPCのみ(携帯はOpenPNEのみログイン)



authentication

English German French