MOSS 上でシングルサインオンを利用できるように、大まかに次のような設定を行います。
- Microsoft Single Sign-On Service の起動
- シングル サインオン データベースの作成
- マッピングするアカウントの定義
3.は、次の部分で設定します。
- 「SharePoint 3.0 サーバーの全体管理」の「サーバー構成の管理」- 「シングル サインオン の管理」- 「企業アプリケーション定義の設定の管理」
この企業アプリケーション定義の設定の管理で新しくアイテムを作成する際に、アカウントの種類として「グループ」もしくは「個人」などが選択できます。前者が多対一マッピングであり、後者が一対一マッピングです。今回は、一対一マッピングを設定するため「個人」を選択します(なお、バックエンドシステムは SQL Server を使用しているため忘れずに "Windows 認証" も有効にしておきます)。
[図.企業アプリケーション定義の設定の管理]
この設定ができあがれば、あとは個人のアカウント情報がそのままバックエンドに渡せるようになるはずだと考えがちです。実は、そうではなく、SSO のデータベースは自動的にマッピングされるアカウントが登録されることはないのです。つまり、一対一であるログオンユーザーアカウントをそのままバックエンドに渡すためにも、なんらかの方法で SSO のデータベースに個人のアカウント情報を登録しなければなりません。個人と設定した場合は、シングルサインオンといいつつ、最低1回はユーザー名とパスワードを聞かれることになります。
では、それはどのように行うのでしょうか。
SharePoint 3.0 サーバーのヒントは SharePoint Designer 2007 にありました。ためしにSharePoint Designer 2007 のデータビューでバックエンドのデータベースのデータを取得するようにしてみたときに、一対一マッピング(個人) 設定のされている SSO認証を指定しました。すると、次のようなページにリダイレクトされます。
このときに利用される URL は次の通りです。
- MOSS サイトの URL + /_layouts/ssologon.aspx?App="シングルサインオンの定義名"
例) http://moss2007/sites/Top/_layouts/ssologon.aspx?App=SSO
つまり、一対一マッピングの SSO認証を使う場合は、このアドレスになんらかの運用ルールを決めて一度アクセスさせてユーザーに自分のアカウントを登録させる必要があります。
SharePoint Designer 2007 データビューの場合は、ユーザーに対して上記 URL へのリンクが自動的に生成されますが、Excel Services などではこうしたリンクは自動生成されることはないようです。
*************************************************************
[図. SharePoint Designer 2007 データビューの場合]
※ 最初にデータビューではなく "認証するには、ここをクリックしてください"というリンクが表示される
※認証が終わるとデータが表示されるようになる
*************************************************************
ちなみに登録されたアカウントはSQL Server 上の SSO データベース内の "dbo.SSO_Credential"テーブルに格納されるようです。
一旦登録されたアカウントを削除するには
ユーザーが個々に登録したアカウントを管理者が削除する必要がある場合は、「SharePoint 3.0 サーバーの全体管理」の「サーバー構成の管理」- 「シングル サインオン の管理」- 「企業アプリケーション定義のアカウント情報の管理」で削除したいアカウントを指定し、次の「企業アプリケーション定義」から適切な項目を選択します。
- このアカウントの資格情報を、この企業アプリケーション定義から削除する
- このアカウントの資格情報を、すべての企業アプリケーション定義から削除する
最後に [設定]ボタンをクリックします。
以上が、いろいろと試行錯誤の末にわかったことのまとめです。参考になれば幸いです。
一対一のマッピング
MOSSで困ったときはまずこちらを参照させて頂いております。
古い記事への質問で申し訳ございません。
現在MOSSにおけるSSOで、できる事できない事などを
調査しております。
SSOのサーバ側の構成や設定に関してはこちらの記事を
はじめいろいろと該当致しまして、その方法はわかってきました。
ただ、その先が闇となっております。
取っ掛かりが欲しく、ご教授頂きたい点がございます。
--
1.既存のWebアプリ(ID,PASSを入力するログオン認証画面を持つ)が存在している場合に、
MOSSログオン後SSOの仕組みを使って、別ウインドウやMOSS上表示の何れかで
既存Webアプリへのログオン操作を行わずに、認証後の画面を表示することは
可能でしょうか。
そもそも話で誠に恐縮なのですが、この点が明記されている
文献をみつけられなかったもので、、、
2.項番1.が可能な場合、既存Webアプリへの情報の伝達は
何をもって行うのでしょうか。
Webアプリによって認証のためのID,PASSの取り扱いは
異なると思います。(GETやPOST、その後の認証処理などなど)
こういった場合、既存のWebアプリに手を加えることなく
認証をクリアする仕組みがわかっておりません。
現時点で想像しておりますのが、SSODBから認証情報を
抽出し、それを対象のWebアプリ別に都合のいい形で
強制リダイレクトするようなWebパーツを作成するのでは、、、
といったものです。
(対象Webアプリのログオン処理毎に処理をスクラッチする必要が有る?)
--
実現したいこととしては項番1.のような動作であります。
SSOサービス開始後に何をすべきかを調べることができる、
単語レベルのお知恵でもまったく構いませんので、
どうぞご教示願えませんでしょうか。
お手隙の際にでもご教示頂けますと誠に幸いです。
どうぞよろしくお願い申し上げます。
以上です。
お世話になっております。onsatuです。
引き続き調べておりました所、下記サイトを発見致しました。(英語)
http://www.synergyonline.com/blog/blog-moss/Lists/Posts/Post.aspx?ID=49
本文読む限りではAmazonへの自動ログインまで
できているようです!
しかもサンプルソースあり。
ソースの詳細検証はまだなのですが、
Webパーツを自作することでSSOによる
自動ログインを実現できそうな内容です!
調査後ご報告差し上げるように致します。
onsatuさん、お返事が遅くなりすみません。SSOについて、私の方でもよい資料がないか、仕事の合間に確認していたところだったのですが、、、発見されたサイトは私もざっと確認してみましたが、とても参考に記事ですね。こうした情報を逆にいただくことになり、大変助かります。ありがとうございます!
私も、この辺についてノウハウが足りないので、この資料を参考にしたいと思います。
もしよろしければ引き続き情報提供いただけると助かりますので、よろしくお願いいたします。
お世話になっております。onsatuです。
遅くなりました。検証結果をご報告致します。
前述のサイトのソースから動かした結果です。
他にもやり方はいろいろあるのかと存じますが、
報告内容としてはサンプルのソースを使っての
SSO実現に関するものです。
1.SSO実現の為にはWebパーツとaspxを作成する必要がある。
Webパーツはターゲットとなる企業アプリケーションの
ログイン認証に必要な情報(hiddenの名称やその他認証に使用するHTMLの値など)を
定義し、aspxへ引き渡す為の物。
aspxはWebパーツから取得したターゲットへのログイン認証情報を元に
認証ページへ強制遷移させる。
2.Webパーツは単なる情報保存用なので特別な作りではない。
aspxに関しては何となくですが、CSRFを実施するような作りです。
設定されたログイン情報を元にターゲットの認証処理が認証できるような
形でHTMLを生成して強制的にリクエストするというものです。
であるので、ターゲットの企業アプリケーションのログイン認証処理の
処理詳細が事前に分かっていないと(この作りでは)SSOを実現できなさそうです。
また、都合のいい認証情報を持ったHTMLを勝手に生成してリクエストするため、
ターゲットがセキュアな認証処理(ワンタイムトークンやリファラチェックなど)を
行っている場合、恐らくNGとなりそうです。
3.強制遷移させた結果、SSODBに認証情報がない場合はExceptionをcatchして
山崎様が記事中で記載されております、
http://moss2007/sites/Top/_layouts/ssologon.aspx?App=SSO
のページに遷移させてやれば、初回設定も対応できそうです。
4.SSODBに認証情報を保存後、ターゲット内で認証情報を変更した場合(パスワード変更など)には対応できなさそうです。
その場合はやはり
http://moss2007/sites/Top/_layouts/ssologon.aspx?App=SSO
に再アクセスしてもらわなければなりませんが、現時点ではその辺はリンクを用意しておいてログイン失敗時は任意にリンクに再アクセスして頂く、という運用レベルまでしか思いついておりません。
簡単ですが以上です。
(改行等読みづらかったらもうしわけございません)
所感としては、単純な構造のWebアプリケーションであればSSOは実現可能でありますが、
ターゲットの企業アプリケーション毎に調整が必要なため、導入のハードルが低いとは
言えないかな、、、といったところです。
(MOSS上のSSO設定が簡単なため、SSOも簡単に実現できるのかと思っておりましたが
そうではない感想です)
また、なにかございましたら質問させて頂きたく存じます。
今後ともよろしくお願い申し上げます。
以上です。
onsatuさん、またまたお返事が大変、遅くなりすみませんでした。
また、貴重な情報提供をありがとうございました。私自身、大変参考になりましたし、他にも多くの方の参考になると思われます。
しかし、SSOは、パスワード管理の点で色々とハードルがありますね。そこは、アカウント管理は別の仕組みを結果的に、固定的なアカウントでのアクセスが可能であることを前提しておかないといけませんね。