====== Fast and Free SSO : Introductions ====== 近年、企業のニーズとしてシングルサインオンの導入がどんどん増えつつある。\\ 開発者にとってはコストを抑えながらお客様のニーズをどう充たせるか非常に悩ましいところである。\\ そういう場合、%%open source solutions%%ならコスト((ダウンロード可能な%%OpenSSO%% Enterprise版は商用だとLicenseの購入が必要である。 1回Licenseを取得すると、コミュニティでコードベースのサポートを受けられる。))の面で有利なので、一応検討する価値はあると思う。\\ 主な%%open source solutions%%には次のものがある。\\ - **%%OpenSSO(Open Web Single Sign On)%%** - **%%JOSSO(Java Open Single Sign On)%%** - **%%CAS(Central Authentication Service)%%** - %%etc.(Atlassian Seraph, Shibboleth, CoSign, Enterprise Sign On Engine)%% ここからは順番に各ソリューションの特性を比較してみる。\\ 基本的に2007年開かれた[[study:sso:comparisons#reference|JavaOne Conference Session TS-4604]]を元にしてある。 {{keywords>OpenSSO, JOSSO, CAS, open source SSO solutions}} ===== head-to-head comparisons ===== ^ ^ **%%OpenSSO%%** ^ **JOSSO** ^ **CAS** ^ |特徴|.SUN社が製品として提供していた「**Access Manager Module**」を%%OpenSSO%%としてオープンソース化\\ 以下に主な機能を示す。\\ .Authentication\\ .Java2 platform、J2EE platform agents\\ .Single-domain SSO \\ .Session management\\ .Policy\\ .Console\\ .Administration tools\\ .Federation\\ .Policy agents|.**%%JAAS, Web Services/SOAP, EJB, Struts, Servlet/JSP,J2EE基盤, JMX, Spring%%**\\ .Apache Axisを実装したweb serviceを利用\\ .「Reverse Proxy component」でn-tier設定が可能\\ .supports Identity stores such as RDBMS, LDAP(including Acitve Directory) and XML\\ .X.509 client certificates |.ドキュメントが充実なプロトコル\\ .多様なClient libraryを提供 ex)Java、.NET、PHP、Perl、Apache、uPortal等\\ .%%uPortal、BlueSocket、TikiWiki、Mule、Liferay、 Moodle等との統合をsupport%%\\ .Communityドキュメント、実装をsupport\\ .多様なauthentication mechanismとの統合が可能\\ ex)LDAP(Active Directory), JDBC, X.509, RADIUS\\ .password認証、証明書(Certificate)認証基盤\\ .「Authentication Handler interface」の実装が必要 | |License|CDDL v1.0((Sun %%OpenSSO%% Enterprise版は Licenseの購入が必要。[[study:sso:comparisons#reference|Sun OpenSSO Enterprise Price table]]参照)) |GNU Lesser General Public License |Apache License, Version 2.0 | |Integrating applications|%%OpenSSO%%とアプリとの統合方法は以下の4種類がある。\\ .**Policy Agents**((執筆中の最新バージョンは3.0である。support可能なapplication serverを以下に示す。\\ .Apache Tomcat 6\\ .Apache HTTP server 2.2.x and 2.0.63\\ .%%BEA WebLogic%% Server/Portal 10\\ .IBM %%WebSphere%% Application Server 6.1\\ .IBM %%WebSphere%% Portal Server 6.1\\ .JBOSS Application Server 4.0.x and 4.2.x\\ .Microsoft IIS 6.0 and 7.0\\ .Sun Java System Application Server 8.1/8.2/9.0/9.1\\ .Sun Java System Proxy Server 4.0\\ .Sun Java System Web Server 7.0))\\ .**Reverse Proxy**((%%OpenSSO%%は基本的にエージェント型だが、リバースプロキシ型もサポートしている。 実際はリバースプロキシサーバーをアプリの前に立ってて、そこにエージェントをインストールすることになる。\\ アクセスが集中するとボトルネックになって、スループットが低下する恐れがある。 その反面、アプリサーバーにエージェントをインストールしなくても済む。))\\ .**Client SDK**((Javaしかサポートしていない。 しかし、「Policy Agent」、「Reverse Proxy]より洗練されたアクセスコントロールが可能である。))\\ .**Identity Service**((「Identity Service」は簡単なwebインタフェイスであるが、%%OpenSSO%%の機能(authentication, authorization等)の利用が可能になる。\\ アプリに統合する際は、プログラミングが必要になるが、Policy Agent, Reverse Proxy, Client SDKに比べて、数ステップの省略ができる。\\ さらに、Rails, Perl, PHP等の%%non-java%%アプリでもうまく動作する。 javaアプリの場合は[[study:sso:comparisons#reference|Securing Applications With Identity Service]]の記事を参考して欲しい。))|.Java\\ .Apache2.2([[study:sso:comparisons#reference|php]]、perl、python、ruby)\\ .ASP.NET |.Java techonology client\\ .JSP software client\\ .uPortal client\\ .Acegi\\ .Perl\\ .ASP.NET\\ .[[study:sso:comparisons#reference|PHP]] | |Server support|.Apache Tomcat\\ .Sun Java System Web Server\\ .Microsoft IIS\\ .Domino\\ .Glassfish Application Server\\ .%%BEA WebLogic%%\\ .Oracle Application Server\\ .Apache Geronimo Application Server\\ .JBoss Application Server | .Apache Tomcat\\ .Jboss Application Server\\ .%%BEA WebLogic%%\\ .Websphere CE Application Server\\ .Microsoft IIS as an ISAPI connector|.springが配置可能なサーバー | |cross-domain SSO|〇([[study:sso:comparisons#reference|CDSSO Controller]]) |〇 |〇(SAML)| |customize |.Authentication Moduleの作成でカスタマイズ可能\\ .Authentication User Interface JSPページはRealm、Locale、Client typeでカスタマイズ可能 |.supportしないWASの場合、plugin作成が必要 |.基本的にHTTPSのみ実装\\ .HTTPで切り替えるのが容易\\ .ログインページの外観が変えられる。\\ .Authenticatorの変更可能(LDAP等) | |deployment|warファイルで配布可能 |配布の際、以下の設定が必要\\ .Single Sign-On Gateway\\ .Authenticator\\ .Identity Manager\\ .Session Manager|.Server-side\\ pre-built WARファイル、又はカスタマイズ可能\\ .Client-side\\ 各applicationごとにCAS client配布 | |support for web service security |〇(secure web services using SAML) | △(WAS依存の為、制限がある。)|〇(protecting URLs) | ===== summary ===== どのsolutionを選ぶかはプロジェクトの目標によって違ってくると思う。 Conferenceでは選ぶ時に参考として次の基準を提示してあった。 * **%%OpenSSO%%** - XML基盤ファイルを利用する際 - 言語に依存しないAPIが重要である場合 - cluster環境が必要な場合 - SSL相互認証が必要な場合 - SUN Java System「**%%Access Manager%%**」の機能をアップしたい場合 * **%%JOSSO%%** - WASがsupport可能な場合 ※supportしない場合、plugin開発の手間がかかる。 * **%%CAS%%** - アプリが**Acegi**を利用する**spring**基盤のinfrastructureである場合 - 簡単なDB認証マネージメントを利用する場合 ===== reference ===== - [[http://www.slideshare.net/craigsdickson/fast-and-free-sso-a-survey-of-open-source-solutions-to-single-sign-on|2007 JavaOne Conference Session TS-4604]] - [[http://developers.sun.com/identity/reference/techart/app-integration.html|Integrating Applications With OpenSSO:the four ways in which to manage application's Web access]] - [[http://www.sun.com/download/index.jsp?cat=Identity+Management&tab=3&subcat=Policy+Agents|Available downloads for OpenSSO Enterprise Policy Agent]] - [[http://docs.sun.com/app/docs/doc/820-3740/adrbn?a=view|Cross-Domain Single Sign-On Session(Sun OpenSSO Enterprise 8.0 Technical Overview)]] - [[http://developers.sun.com/identity/reference/techart/id-svcs.html|Securing Applications With Identity Services]] - [[http://www.josso.org/confluence/display/JOSSO1/Jossify+your+PHP+Application|Jossify your PHP Application]] - [[http://www.ja-sig.org/wiki/display/CASC/phpCAS|CAS client library for CASifying PHP applications]] - [[http://catalogs.sun.com/is-bin/INTERSHOP.enfinity/WFS/Sun_Catalogue-Sun_Catalogue_JP-Site/en_US/-/JPY/ViewCatalog-Browse?CatalogCategoryID=OplIBe.eOHgAAAEdHNQPhHrm&PriceIt=true|Sun OpenSSO Enterprise Price table]] - [[http://www.knom.or.kr/knom-review/v10n1/3.pdf|Recent Developments of Integrated Identity Management Technologies to realize Multi-Domain Single Sign On]] ~~DISCUSSION~~