SAML対応のシングルサインオン製品（クラウド対応）を調べてみた

##なぜSAMLがいいのか？
![qiita_whysaml.jpg](https://qiita-image-store.s3.amazonaws.com/0/247290/ff34c38b-cf1e-011e-6cb3-ef6c603d8e39.jpeg)

クラウドサービスにシングルサインオンできる製品、例えばOneloginやSKUID、Oktaといった製品で一般的に利用されているのは、フォームベース認証の置き換え（シングルサインオン）です。

これをSAML認証（正確にはSAML 2.0認証だが、面倒なので以下ではSAML認証と書く）に置き換えると何が嬉しいのか。利用者の立場で、自分が理解できるようにまとめてみました。といっても、理由は一つだけです。

###SAML認証を使う理由はクッキーの不正アクセス防止

![whyform.png](https://qiita-image-store.s3.amazonaws.com/0/247290/48ad9456-d6b7-7839-a6a9-319c37a19fc5.png)


フォームベース認証だと、認証クッキーをブラウザにキャッシュするため、なりすましによりクッキーへの不正アクセスを許してしまう可能性があります。

しかし、SAMLの場合、クッキーを利用せずに認証情報をIdP (Identity Provider、シングルサインオン製品）ならびにSP (Service Provider、IdP経由でログインするクラウドサービスなどの認証先) に渡すことができます。よって、同じクラウドサービスで、認証方式をフォームベース認証とSAML認証の2つから選択可能である場合は、SAML認証を利用したほうが安全です。

また、フォームベース認証の場合、ログインページにハッキングして、ページを書き換えて偽のログインフォームを設置し、ユーザーのIDやパスワードを盗み取ろうとする被害を防ぐことが難しいのが実情です。これがSAMLであれば、ログインフォームが書き換えられていたとしても、そもそもログインフォームからログインするわけではないので、情報が盗み取られることはありません。この観点でもSAMLのほうが安全です。

しかし、シングルサインオン製品を使って、全てをSAML認証に置き換えられるかというと、そうではありません。それは、SAMLに対応しているサービス・アプリは限定されるからです。多くのクラウドサービスやアプリでは、まだSAMLに対応していないものがほとんど。「SAMLでアクセスしたい！」といっても、SPのほうで対応していなければ、フォーム認証を利用せざるを得ないわけです。

例えば、OneloginでSalesforceを検索してみると以下の通りです。


![Qiita_SFDC.PNG](https://qiita-image-store.s3.amazonaws.com/0/247290/3d166a6a-e734-4053-9441-8706b8d691cc.png)

こちらは、SAML認証がばっちり提供されています。

しかし、再びOneloginでYahoo Japanと検索してみると以下の通りです。


![Qiita_YJ.PNG](https://qiita-image-store.s3.amazonaws.com/0/247290/2a04b388-ce22-ea2f-817a-f9e8a39236bb.png)

こちらでは、SAML認証が提供されていません。このように、「全てのクラウドサービスへのログインを安全安心のSAML認証にしたい」といっても、SAML対応しているサービスがまだまだ少ないため、当面は、「SAML認証とフォームベース認証の両方利用できる」場合はSAML認証を使い、フォームベース認証しか利用できない場合はフォームベース認証を使う、というアプローチとなりそうです。

また、クラウドサービスへのシングルサインオンを提供している製品 (IDaaS: Identity as a Serviceともいう) は基本的にSAML対応しています。今後SAML認証の必要性は高まる可能性が高いので、もしSAML対応していない製品があったら、導入の選択肢から外したほうが良いでしょう。例えば、
<a href="https://qiita.com/itsecurity_searcher/items/decb8b6daadcd5fe51de">前回の記事</a>でピックアップしたKDDI Business IDは「SAML対応」の文字がないので、SAML未対応と思われます。


##海外メーカーのSAML対応製品

今回ご紹介するのは<a href="https://www.onelogin.com/jp">Onelogin</a>です（開発企業は米国Onelogin社）。なお、Oneloginのライバル製品としてOktaがありますが、Oneloginは無料でアカウントが作れ、機能が限定的ながらも無料利用出来るのに対して、Oktaには無料アカウントという概念がそもそもないので、Oneloginのみの情報でみていきます。

###Onelogin

![Qiita_OL_admin.PNG](https://qiita-image-store.s3.amazonaws.com/0/247290/d8434b78-f2d5-e321-dc05-1a4387cba0e7.png)

Oneloginの場合は、アプリ管理画面でアプリの追加（ADD APP）をクリックすると、上図のアプリ追加画面が表示されます。ここでアプリ名を入れると、SAML対応しているかどうかを確認することができます。

![Qiita_chatwork.PNG](https://qiita-image-store.s3.amazonaws.com/0/247290/0a388cb5-057d-22cd-0e40-4974edddc203.png)

SAML 2.0という表示があればSAML対応、なければSAML非対応です。

![Qiita_blogger.PNG](https://qiita-image-store.s3.amazonaws.com/0/247290/eb07494f-206f-db2a-5460-8352cfd115d1.png)

それなりに利用されていそうな製品でも、SAML非対応のものが結構あります。例えば、上図はGoogleのブログサービスであるBloggerを検索した時の表示。こちらはSAML非対応だったりします。

なお、アプリ検索で、SAMLに対応しているアプリだけを引っ張ってこようとしましたが、ダメでした。アプリ名にSAMLと入っているものしか引っ張ってこれませんでした。よって、どれだけのアプリでSAML対応しているかは不明です。

ちなみに、Oneloginは日本国内では先行していたため取り扱っている販売代理店が多い点はプラス（特にライセンス購入だけでなく、導入支援を販売店に依頼する場合）。販売代理店が少ないと、代理店を比較検討して選ぶことができないので、この点はよいかと思いました。



##国内メーカーのSAML対応製品

次に、国内メーカーのSAML対応製品について、無料アカウントを発行できる<a  href="https://sku.id/">SKUID</a>を見てみます（開発企業はGMOインターネットグループのGMOグローバルサイン）。SKUIDは、一部オプション以外の機能は全て無料で使える、格安のシングルサインオン製品です。

###SKUID

![SKUID_addapp.PNG](https://qiita-image-store.s3.amazonaws.com/0/247290/28aac1de-661f-2a87-e399-c2ddb26f91d5.png)

管理者画面で企業アプリ検索するときに、「アプリを検索」欄に「SAML」と入れると、SAML対応のアプリのみが出てきました。

![SKUID_SAML.PNG](https://qiita-image-store.s3.amazonaws.com/0/247290/a0c4ab33-410f-e5cb-e444-2f70ced31bb3.png)

現時点でSAML対応しているアプリは11個。有名どころではG Suite、サイボウズ、Salesforce、Chatwork、Dropboxなどが網羅されていました。今後はこの数も増えてくるものと思われます。
*2018/10追記: SAML対応アプリが13個に増えていました。上記に加えて、「IBM Verse」と「Oracle Identity Cloud Service」が追加されています。

![SKUID_meta.PNG](https://qiita-image-store.s3.amazonaws.com/0/247290/36d33b1f-a056-cbe4-246a-38ff1d090462.png)

Dropboxを例にとって説明すると、上図のように、アプリ名（SKUIDの画面に表示される名前。変更可能）、ログインURL（必要に応じて変更）、そしてメタデータを登録して完了となります。

なお、SKUIDは販売代理店がどの程度かは不明ですが、SKUIDページから不明点などを問い合わせたら、メーカーが直接サポートを行ってくれました。設定も簡単なので、導入を100%丸投げしたい場合を除けば、特に販売店を通す必要もないかと感じました（今後もメーカーが直接サポートを提供し続けてくれる限りは）。


##OneloginとSKUID、どちらがよい？
![Qiita_vs.PNG.jpg](https://qiita-image-store.s3.amazonaws.com/0/247290/2c2688b8-d6d4-2ffc-cfb4-087b5a365f53.jpeg)

OneloginとSKUIDの基本性能比較については、<a href="https://qiita.com/itsecurity_searcher/items/decb8b6daadcd5fe51de">前回の記事</a>でご紹介しました。まとめると、以下の通りです。
###Onelogin

* Oneloginは無料で利用できる機能はほとんどない。日本語を使おうとすると月額4ドル以上のプランに入る必要あり。
* また、Oneloginは日本法人があり、販売店もたくさんあるが、英語サイトに比べると、日本語サイトの情報はかなり少ない。
* 日本国内では多くの販売代理店がいるため、複数の代理店から比較検討して購入また導入が行える。

###SKUID

* SKUIDは無料でほとんどの機能が利用でき、Oneloginを無料で使おうとする場合、ネックとなる「アプリ数」「ユーザー数」に制限がないという太っ腹。
* 現時点の有料機能は「IPアドレス制限」と「ワンタイムパスワード」の2つで、1機能月額100円で利用可能。
* 日本メーカーなので全情報が日本語で提供可能。UIも日本語。
* サイトを見る限り、販売店ではなく、メーカーが直接サポート。

*2018/10追記: SKUIDの有料機能に「外部IdP連携」「Active Directory連携」が追加されていました。いずれも月額100円/1ユーザー。

OneloginのSAML対応アプリに関しては正確な個数はわかりませんが、ざっと管理画面で検索してみる限り、OneloginのほうがSAML対応アプリが多いです。ただ、SKUIDもそのうちキャッチアップしてその差はなくなるのではないかと思われます。

現時点では、「会社のセキュリティーポリシー上、クラウドへのシングルサインオンはSAML 2.0しか認めない」という企業はないと思います（というか、あったらフォームベース認証しか提供されていないアプリが全て利用できなくなりますね）。

よって、現時点でSAML 2.0対応しているアプリがとにかく多い方がよいのであれば、Oneloginがおすすめです。また、Oneloginは無料版は機能制限が多すぎて利用するに耐えないので、最低でも月額4ドル/1ユーザー（主要機能＋日本語対応）かかるのがネックです。

逆に、そこまでSAML 2.0対応アプリの個数にこだわらず（つまりフォームベース認証でも問題なく）、できれば無料で、または安く使いたいのであればSKUIDがおすすめです。無料ユーザーと有料ユーザーを混在させて、必要なユーザーだけ有料機能を使わせられることができる点がよいと思いました。


* <a href="https://www.onelogin.com/jp/signup">Oneloginの登録画面はこちらから</a>
* <a href="https://portal.sku.id/users/sign_up">SKUIDの登録画面はこちらから</a>