Shibboleth(読み:シボレス)は、SAMLを中心とした標準仕様を利用して、組織内および組織をまたいだWebシングルサインオン(SSO)や認証フェデレーションを実現するオープンソースソフトウェア群です。
Shibbolethでは、SAMLを用いて認証結果やユーザー属性をIdPからSPへ連携します。IdP側では、SPごとに提供する属性を制御できるため、必要最小限の情報だけを連携するなど、プライバシーに配慮したフェデレーションを構成できます。
このようなShibbolethを用いた認証を、Shibboleth認証(シボレス認証)と呼びます。
(画像はShibboleth Consortiumより)
Shibbolethプロジェクトは、高等教育・研究コミュニティ向けの認証基盤を整備する取り組みとして、2000年にInternet2のMiddleware Initiativeから始まりました。その後、OASISのSAML Working Groupの活動とも連携しながら発展していきました。
2003年にはShibboleth 1.0がリリースされ、世界各国の研究・教育機関を中心に採用が進みました。その後、SAML 2.0への対応を進めたShibboleth 2系が2008年頃から利用されるようになり、複数のIdPやSPが参加する大規模なフェデレーションにも対応しました。2014年にはShibboleth IdP V3が登場し、認証機能や設定・カスタマイズ性が強化されました。
現在もShibbolethはオープンソースソフトウェアとして開発されており、Apache License 2.0の下で提供されています。なお、ShibbolethはInternet2の登録商標です。
Shibbolethは、一般的なWebベースのSSOと同様に、一度認証したユーザーが複数のWebサービスを利用する際の認証負担を軽減します。
特徴の一つは、SAMLなどの標準仕様を利用し、ユーザーが所属する組織とサービス提供者が異なる場合でも、組織を越えたSSOを構成できることです。また、IdP側でSPごとに提供する属性を制御できるため、必要以上のユーザー情報を送らない運用も可能です。
ShibbolethによるWeb SSOでは、主に以下が連携します。
複数のIdPから認証先を選択する必要がある場合には、Discovery Service(DS)が利用されることもあります。
ShibbolethによるSSOの代表的な手順は、以下のようになります。
ユーザーは、まだSP上の有効なセッションを持っていない状態で、認証が必要なWebサービスや保護されたコンテンツへアクセスします。
(画像はShibboleth Consortiumより)
SPは認証要求(AuthnRequest)を生成し、ユーザーのWebブラウザを介してIdPへ送信します。
Shibboleth SPは、保護対象となるWebサーバーやアプリケーションと連携して動作します。
IdPは、ユーザーがすでにIdP上で有効なログインセッションを持っているか確認します。
すでに認証済みであれば、再度ユーザー名やパスワードなどを入力することなく次の処理へ進める場合があります。
初回アクセスやセッションが失効している場合は、IdPが設定された認証方式を用いてユーザーを認証します。認証方式はID・パスワードだけでなく、多要素認証などを組み合わせることも可能です。
(画像はShibboleth Consortiumより)
ユーザーの認証に成功すると、IdPはSAML Responseを生成します。
この認証応答は、通常ユーザーのWebブラウザを介して、SPのAssertion Consumer Service(ACS)へ送信されます。
SPはIdPから受け取ったSAML Responseについて、署名や発行元、宛先、有効期限などを検証します。
検証に成功すると、SPはユーザーのセッションを作成します。
また、IdPから提供された所属やメールアドレスなどの属性情報を利用し、サービス側のアクセス制御ルールに基づいて、ユーザーが利用できるコンテンツや機能を決定します。
ユーザーが同じSPへ再度アクセスした際、SP上のセッションが有効であれば、改めて認証を行うことなくサービスを利用できます。
また、別のSPへアクセスした場合でも、IdP側のログインセッションが有効であれば、IdPでの再認証を省略できるため、組織を越えたSSOを実現できます。
複数のIdPとSPが、共通のルールや信頼関係の下で認証情報を連携する仕組みを、認証フェデレーションと呼びます。Shibbolethでは、SPとIdPを同一組織内に限定せず、大学と電子ジャーナル事業者、研究機関とクラウドサービス事業者など、異なる組織間でフェデレーションSSOを構成できます。複数のIdPから認証先を選ぶ必要がある場合には、Discovery Service(DS)を利用できます。DSは、利用可能なIdPの一覧などを表示し、ユーザーが自身の所属組織を選択できるようにする仕組みです。
Shibbolethには、ユーザー属性を適切に管理するためのAttribute Filter機能があります。IdP側ではポリシーに従って、SPごとに送信するユーザー属性を制御できます。例えば、あるSPには所属組織だけを提供し、別のSPにはメールアドレスも提供する、といった設定が可能です。必要最小限の属性だけを提供することで、サービス利用に必要な情報を連携しながら、プライバシーへの配慮も行えます。SP側でも、信頼するIdPや利用可能な認証先をメタデータや設定によって管理できます。
学認(GakuNin:学術認証フェデレーション)は、日本の大学や研究機関、サービス提供事業者などが参加する認証フェデレーションです。大学・研究機関が学認へ参加し、自機関のIdPを学認へ登録することで、学生や教職員は所属機関のアカウントを使って、学認に対応した外部サービスへSSOできるようになります。
例えば、電子ジャーナル、学術データベース、クラウドサービスなどへのアクセスに利用されています。
ただし、Shibbolethを導入するだけですべての学認対応サービスを利用できるわけではありません。実際に利用できるサービスは、所属機関が契約しているサービスや、利用を許可されているサービスなどに限られます。