シングルサインオンは、
1) 複数サービスで、アカウント情報を共有する。
2) 複数サービスで、認証セッションを共有する。
の二軸あると思いますが、
「1)」については下記URLのSlavePNE機能で実現できてる。
「2)」については今設計中でして、
2008/4末リリース予定のOpenPNE2.12にて実現したい。
なんか参考になるオープンソースのWEBサービスのソースとかないですかねぇ?
─────────────────────────
國忠亮介(Kunitada Ryosuke) kuni...@tejimaya.com
http://sns.openpne.jp/?m=pc&a=page_f_home&target_c_member_id=10
メッセンジャー(Skype) kunitada
株式会社手嶋屋 http://www.tejimaya.com/
OpenPNEプロジェクト http://www.openpne.jp/
ZenCart On Xoopsでは Xoopsにログインした状態で
ZenCartのSHOP部分に行ったら自動的にログインする。
というのはやりましたが、同じサーバー、同じドメイン上で
実行するのであればそんなに大変ではないですよ。
多分。
國忠 亮介 さんは書きました:
--
木下敏夫
mailto:ki...@tktools.jp
http://www.tktools.jp/
http://www.oidc.jp/bmb/index.php?topic=-m-D14
2)の認証セッションの共有で シングルサインオンを実現しています。
PNEの認証ブロックを切り出して 連携するプログラムに組み込んでいます。
ユーザーはそれぞれのツールで作る必要がありますが、PNEにログインしていれば
ログイン処理が不要なのは好評のようです。
木下さんも書いてらっしゃいますが、同一ドメインでの運用ならそれほど
難しくないです。
この手法のばあい 連携するツール側への組み込みも必要になるので
その分は手間になりますね。
土谷さんのほうで,OpenPNE最新版とGeeklog最新版で,あらためて
シングルサインオンテストサイト構築中です。その上で
ドキュメントづくり,ということになりますので,
すこしお待ちください。来週くらいにはWikiに公開できると思います。
ですよね?>土谷さん
既に開発していたのは1世代前のOpenPNEでしたので。
今回のシングルサインオンは,OpenPNEがマスターで,Geeklogはスレーブです。
OpenPNEの,だれから招待されたのかというようなSNSならではのユーザ情報を
生かしたいので,そのように設計しています。
レベル1:ID共有
レベル2:セッション共有したシングルサインオン
ですね。
レベル1(LDAP、DB直接読みこみ、HTTPベースのカスタムAPIなど)
レベル2(クッキー共有、OpenID?、SAMLなど)
に合った仕掛けをOpenPNEは提供していく必要有りだと思いました。
クッキー共有でカバーできるのは同一ドメインまでですね。
要件定義に加えます。
-----------------------------------------------------------
手嶋 守 (tej...@tejimaya.com)
http://sns.openpne.jp/?m=pc&a=page_f_home&target_c_member_id=7
メッセンジャー(Skype) tejimamamoru
株式会社手嶋屋 http://www.tejimaya.com
OpenPNEプロジェクト http://www.openpne.jp
-----------------------------------------------------------
> レベル1:ID共有
> レベル1(LDAP、DB直接読みこみ、HTTPベースのカスタムAPIなど)
LDAP連携ですが、
LDAPに登録されているユーザをPNEに取り込む方法以外にも
【PNEに登録されているユーザの情報をLDAPから取得する】
というのがありまして 社内で稼動中のPNEに実装しています。
逆にIDを共有していないのは社内だけど 招待制だからです。
(なので LDAPでの認証をつかってないです。)
ディレクトリサーバのユーザ情報をPNEがスレーブになって利用する場合
LDAPサーバのID情報とPNEのc_member_idとの連携をどうするか
がキーポイントになると思います。
「ディレクトリサーバ側だけで 追加、変更、削除されたときの 扱いを
どうするか」について皆さんでの議論を望みます。(もちろん参加します。)
MasterPNEの連携レベルとして
* ID連携(ログインID連携、シングルサインオン)
* プロフィール連携
の2ジャンルに分けて議論したいです。
扱っている内容がちがうので
ID連携レベル1
ID連携レベル2
プロフィール連携レベル1
プロフィール連携レベル2
となっていくと思います。
-----------------------------------------------------------
>すこしお待ちください。来週くらいにはWikiに公開できると思います。
>ですよね?>土谷さん
明日(13日)か明後日(14日)ぐらいには...
>===== Original Message ===========
>From : IvyWe今駒さん
>Subject: [openpne-dev:152] Re: 次期OpenPNEでシングルサインオンをやりたいなぁ
>Date : 2007/12/12 12:13:33
>==================================
===== 2007/12/12 20:50 土谷和子 =====
http://sns.openpne.jp/?m=pc&a=page_f_home&target_c_member_id=2104
土谷さんのほうで用意できました。
シングルサインオンWiki:
http://wiki.geeklog.jp/index.php/SSO1
テストサイト:
http://sso.geeklog.jp/
新規登録して,シングルサインオンを。
シングルサインオンに関してできましたら,Geeklog.jp SNSのOpenPNE SSOプロジェクト
http://biz.geeklog.jp/?m=pc&a=page_c_home&target_c_commu_id=14
こちらにご参加ください。
>シングルサインオンWiki:
>http://wiki.geeklog.jp/index.php/SSO1
ドキュメントの位置づけとしては、リモート認証も含めた例のひとつとして
書き出しました。
http://wiki.geeklog.jp/index.php/Authentication
Geeklog次期バージョンではOpenIDが標準機能になり、
認証は、通常認証とリモート認証とOpenID利用の3種類になります。
MediaWIKIではOpenIDが使えるらしいですし、(未確認ですけど)
OpenIDは、注目する必要があります。
>===== Original Message ===========
>From : IvyWe今駒さん
>Subject: [openpne-dev:176] Re: 次期OpenPNEでシングルサインオンをやりたいなぁ
>Date : 2007/12/17 09:24:12
>==================================
===== 2007/12/17 09:56 土谷和子 =====
http://sns.openpne.jp/?m=pc&a=page_f_home&target_c_member_id=2104
シングルサインオンとID連携は別に考えたいので まずは ID連携から・・・
IDの連携(一方に 新規IDが作成されたりprofileが変更されたら
もう一方にもその変更を通知する)にはESBを利用するのが
いいのではないでしょうか。
土谷さんが書かれたwikiページをよんでみたところ
の GeeklogとOpenPNEの連携に関する変更点などから
IDの追加、変更に関する部分がシステム依存になっていて
さらに第三のシステムとの連携のために
新たにコーディングしなければならない感じがしました。
それぞれにAPIを公開し、ESB(OSSな実装でいうとMuleとか)で
連携していくのが いいと 思います。
そのためのI/Fを定義して共有化していくと 相手に依存しない
開発が可能になるのでお互い幸せに慣れるのではないですか?
さわいさん,ご意見ありがとうございます。
MLよりこのあたりの開発関係の話題は,SNSの方が適していると
おもいますので,あとはSNSのほうでもお願いします。
http://biz.geeklog.jp/?m=pc&a=page_c_topic_detail&target_c_commu_topic_id=370&comment_count=8
こちらでも進んでいますので。
今回,すぐにSSOを実現するための手法が今回紹介しています。
これを利用すればすぐにOpenPNEとGeeklog連携サイトが
できあがります。
ただし,長い目で見れば,来年のGeeklogのOpenID
対応などの動きとあわせ,さらに汎用的な道を探るのが良いでしょう。
> 今駒です。
>
> さわいさん,ご意見ありがとうございます。
> MLよりこのあたりの開発関係の話題は,SNSの方が適していると
> おもいますので,あとはSNSのほうでもお願いします。
> http://biz.geeklog.jp/?m=pc&a=page_c_topic_detail&target_c_commu_topic_id=370&comment_count=8
> こちらでも進んでいますので。
すすめられるのは かまわないですが、
ここはOpenPNEの開発用MLだし、OpenPNEのための話し合いはここでしたいです。
議論の場が拡散するのは 好ましくないと思います。
OpenPNE側に実装すべきI/F(ID連携や SSOに関するフック、API)については
ここで 議論したいです。
> 今回,すぐにSSOを実現するための手法が今回紹介しています。
> これを利用すればすぐにOpenPNEとGeeklog連携サイトが
> できあがります。
OpenPNEとGeeklogの連携だけを かんがえれば 今の実装で問題ないと思います。
OpenIDは、現在こちらもMT+OpenIDプラグインと自前のOpenIDサーバで検証をし
ています。
対応できそうです。
-----------------------------------------------------------
難しいところですね。
とりあえずOpenPNEとしてはOpenIDのProducerになれば、第一弾としては、いい
かな?と思っています。
ここでインターフェースが切れれば、お互いの対応はやりとりが少なくて済みま
す。
もっと深い連携についてはGeeklogの仕組みもある程度知る必要が有ると思いま
す。その議論はGeeklog内のコミュニティでやりたいです。
さわいさんとしては、かねてからLDAPの属性情報までもOpenPNEで連携したいと
言う話をされていたので、属性情報までもGeeklogと連携するにはどうしたらい
いか?OpenIDで出来るのか?
等については、Geeklog内でヒアリングをしたいと思います。
-----------------------------------------------------------
私はシングルサインオンを次のように理解しています。
「2つ以上の認証が必要なシステムにおいて ログイン操作が1回ですむように
システム側で連携すること」
ログイン操作を1回だけで収めるには
必要条件としては
・複数のシステムにおいて 共通のキーがあることもしくは 変換が可能なこと
OpenPNEでいうところの c_member_id など 一意にユーザが定まるためのデータ
他には メールアドレスや他のシステムではユーザ名がそうかもしれない。
システム間で連携するには push型とpull型の連携がある。
push型とは
・一方のシステムにログイン時に呼び出され
キーを引数に連携する他のシステムもログイン状態にする
pull型とは
・他のシステムに対して ユーザがログインしているかを問い合わせて
ログイン状態ならは 自システムもログイン状態にする
※今回実装されたGeeklogとのSSOは push型だとおもっていまして
私が 実装したのは pull型です。
どっちにも一長一短があると 思います。
で、OpenPNEをマスターにするときとまた、OpenPNEをスレーブにするときに
どんな機能があるといいかを 議論したいです。
OpenPNEとGeeklogをハックしてシングルサインオンする例1では
共通のキー:OpenPNEのregist_address(登録時メールアドレス)=Geeklogのusername(ユーザ名)
になります。
http://wiki.geeklog.jp/index.php/SSO1
WIKIに追記しました。
>===== Original Message ===========
>From : SAWAI-Shooskayさん
>Subject: [openpne-dev:183] シングルサインオン (was: Re:次期OpenPNEでシングルサインオンをやりたいなぁ
>Date : 2007/12/17 13:59:26
>==================================
===== 2007/12/17 14:46 土谷和子 =====
http://sns.openpne.jp/?m=pc&a=page_f_home&target_c_member_id=2104
> 手嶋です。
> とりあえずOpenPNEとしてはOpenIDのProducerになれば、第一弾としては、いい
> かな?と思っています。
OpenID用語でいうところの IdP (Identity Provider/Idプロバイダー)のことですよね。
> ここでインターフェースが切れれば、お互いの対応はやりとりが少なくて済みます。
たしかに IdPになれれば いいと思います。
OpenIDの対応のシステム(OpenID用語ではConsumer) としては
そのOpenPNEへのClaimed Identifier(いまのところURL) を入力してログインする
Consumerでは Claimed Identifier→ユーザIDのようなテーブルを持つ
などして OpenIDへ対応しているだろうからその認証結果を持って
ユーザを特定しログインできるようになるはず
ということですね。
> もっと深い連携についてはGeeklogの仕組みもある程度知る必要が有ると思いま
> す。その議論はGeeklog内のコミュニティでやりたいです。
はいGeeklogとの連携については Geeklog内でいいと思いますが・・・
Geeklogとは関係のないシステムとの連携はどうしますか?
> さわいさんとしては、かねてからLDAPの属性情報までもOpenPNEで連携したいと
> 言う話をされていたので、属性情報までもGeeklogと連携するにはどうしたらい
> いか?OpenIDで出来るのか?
> 等については、Geeklog内でヒアリングをしたいと思います。
http://openid.net/specs/openid-simple-registration-extension-1_0.html に
OpenIDのクエリに含めることができるのは
ニックネーム
メールアドレス
フルネーム
誕生日
性別
郵便番号
国
言語
タイムゾーン
だよ って あります。
(もちろん OpenPNEで実装して OpenIDのコミュニティにコメント、コミットするのはありですが・・・)
なので OpenIDのextensionまで実装しても 連携はむずかしいんじゃないでしょうか。
OpenPNEがマスターとして 更新情報を連携するためには 登録・変更時にフックを提供して
そこに それぞれのシステムへのAPIをかいてもらうことになるんじゃないかなぁ・・・
と おもいますよ。
profile連携は 別にスレッドを立てたほうがいいですよね。
>> もっと深い連携についてはGeeklogの仕組みもある程度知る必要が有ると思いま
>> す。その議論はGeeklog内のコミュニティでやりたいです。
> はいGeeklogとの連携については Geeklog内でいいと思いますが・・・
> Geeklogとは関係のないシステムとの連携はどうしますか?
一度に色々なシステムとの連携を行い始めると収集が付かなくなるので
とりあえず現在一番連携の仕組みの構築が進んでいるGeeklogで実施し
技術ノウハウを収集しながら
他のシステムはその情報を参考に自システムへの取り込みを行う。
という流れで良いのではないでしょうか。
>OpenID用語でいうところの IdP (Identity Provider/Idプロバイダー)のことです
>よね。
そのとおりです。Providerでした!
すみません。
>> ここでインターフェースが切れれば、お互いの対応はやりとりが少なくて済みます。
>
>たしかに IdPになれれば いいと思います。
>
>OpenIDの対応のシステム(OpenID用語ではConsumer) としては
>そのOpenPNEへのClaimed Identifier(いまのところURL) を入力してログインする
>Consumerでは Claimed Identifier→ユーザIDのようなテーブルを持つ
>などして OpenIDへ対応しているだろうからその認証結果を持って
>ユーザを特定しログインできるようになるはず
>
>ということですね。
はい、GeeklogはConsumer OpenPNEは Providerとして接続します。
GeeklogへのログインがURLになってしまうのは、利用するメンバーにとっては、
慣れが必要なのかもしれません。
IDの連携とprofileの連携はごっちゃにするとシステムが重たくなるので、別途
議論出来ればと思います。
http://trac.openpne.jp/wiki/pne-masterslave
ここで、2分野分けて記載します。
> 手嶋です。
>
> GeeklogへのログインがURLになってしまうのは、利用するメンバーにとっては、
> 慣れが必要なのかもしれません。
http://sso.geeklog.jp/
でログインして,SNSサイトを選ぶと
http://sso.geeklog.jp/sns/
へ画面遷移します。
なぜGeeklogのシステム画面のほうにOpenPNE・Geeklogログインフォームを
入れているかというと,GeeklogのほうがログインTOPページのカスタマイズを
非常にこまかく設定できるからでした。
GeeklogでまったくOpenPNEのログインTOPページのデザインにも
できますし,あらゆるデザインを対応させることができるので,
もっともログインしやすいデザインにすればよいです。
ちなみに,
http://www.della.co.jp/
http://www.della.co.jp/club/
これらもGeeklogです。
また,GeeklogのOpenPNE連携テーマ というのを開発して,
常にOpenPNEで指定したスキンでGeeklogを表示することさえ
可能です。
たとえばヘッダはOpenPNEのヘッダのスキンをそのままGeeklogの
ヘッダにも。
そのため,OpenPNEから途中でGeeklogの画面に遷移したとしても
ユーザはまったく気が付かない。そんなサイトも可能で,
今回こちらで開発したのはそういう連携サイトの開発のため
シングルサインオンを開発したのでした。
GeeklogのOpenPNE対応テーマ開発に関してもGeeklog.jp SNSで
本格的にすすめていこうと思っています。
12月にやり取りしてたときには
シングルサインオンは OpenIDで対応していくという話でしたよね。
第1弾は MasterPNEでIdP (Identity Provider/Idプロバイダー)になる
・・って感じでした。
最近気がついたんですが、OpenIDって V2.0nofinalがリリースされてましたね。
対応するとなると V2.0(V1.x系含む)なんですかね。