Shibbolethは、組織内および組織を超えてWeb上でフェデレーション・シングルサイオン(SSO)を実現する、標準的なオープンソースソフトウェアのパッケージです。
Webのオンライン情報への個別アクセスに対して、個人情報を保護する方法で、個人情報に基づきアクセスを許可するSAMLのフェデレーション認証方式であるため、安全で便利なソフトウェアです。
このようなShibbolethを用いた認証を、Shibboleth(シボレス)認証と呼びます。
(画像はShibboleth Consortiumより)
Shibbolethプロジェクトは、高等教育機関をメンバーとするInternet2が2000年に教育用のミドルウェア活動として始め、非営利コンソーシアムOASISのSAML(Security Assertion Markup Language)ワーキンググループと合同で推進されました。
2003年Shibboleth1.0がリリースされ、世界中の研究および教育コミュニティが採用しました。2006年Shibboleth2.0は、SAML2.0で構築され、すべてのマルチ・ラテラルのメタデータの取扱いが可能になりました。
2014年には、高度な認証と容易なカスタマイズが可能なIdP(Identity Provider)ソフトウェアの第3版をリリースしました。
現在、オープンソースソフトウェアとして展開し、Apache Software Licenseの下でリリースされています。
なお、Shibbolethは、Internet2の登録商標です。
Shibbolethは、他のWebベースのSSOと同様な働きをしますが、異なる点は、標準仕様を遵守し、ユーザの個人情報を保護しつつ組織外のサービスに対するSSO機能を提供することです。
Shibbolethが、WebベースでSSO機能を実現する構成要素には、ユーザが使うWebブラウザ、アクセスするデータ、ユーザを認証するIdP(Identity Provider)、データを提供するSP(Service Provider)があります。
ShibbolethによるSSOの手順は、以下のようになります。
ユーザは、最初アクティブセッションを持たないで、保護されたデータのあるSPにアクセスします。
(画像はShibboleth Consortiumより)
SPは、ユーザとIdPに認証要求を送信します。SPソフトウェアは、通常データと同じサーバにインストールされています。
IdPは、ユーザのセッションを調べ、既存のセッションがある、つまり一度認証されていれば、次のステップに進みます。初めての場合、IdPはユーザのID・パスワードなどを認証し、ユーザは次のステップに進みます。
(画像はShibboleth Consortiumより)
IdPは、認証応答をユーザとSPに返信します。
SPは、IdPからの認証応答を検証しユーザのセッションを作成後、応答から読み出した情報に基づき保護されたデータを利用可能にし、データをユーザに送信します。
ユーザが再度SPにアクセスすると、すでにセッションを持っているため、改めて認証することなく、SPはユーザの要求を処理し、ユーザにデータを送信します。
IdPとSPのグループが相互協力に同意すると、そのグループはフェデレーションと呼ばれます。
Shibbolethでは、SPとIdPが同一組織内に限定されず、組織外のSPやIdPとフェデレーションするフェデレーションSSO機能を実装しています。
そして、SPが認証要求するIdPを発見するためのDS(Discovery Service)が提供されています。DSでは、フェデレーションで統合したIdPを選択するユーザインタフェースを表示します。
Shibbolethには、ユーザの個人情報をユーザ属性として安全に保護するため、ユーザ属性のフィルタポリシーが設定できる機能があります。
ポリシーに従い、IdPはSPごとに送信するユーザ属性を制御し必要最小限の識別情報を流し、SPはサービスごとに提供するIdPを制御します。
フェデレーションにおいてHTTP経由でSSOを行う場合、IdPとSPは、メタデータを用いて相互通信を行います。
メタデータには、一意の識別子、人間が読める名称、メッセージを配信するURLリスト、メッセージの作成等に使用される暗号情報などが含まれます。
フェデレーションは、すべてのメタデータを参加するIdPやSPに配布するため、個々のIdPやSPはフェデレーションに自組織のメタデータを提供するだけです。
Shibbolethを導入し、フェデレーションに参加している組織であれば、個人情報の漏えいリスクが少なく、組織を超えて利便性の高いSSO機能が使用できます。