Active Directory連携できるシングルサインオン製品 (クラウドサービス対応)

以下では、Active Directory連携機能があるシングルサインオン製品について紹介比較していこうと思いますが、自身でもよく理解できていない点があるので、不明な点は調べながらまとめました。理解違いなどあれば、いつでもコメントください。

##Active DirectoryとAzure ADについて

![Qiita_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411757/571a2305-d7e8-32ae-c650-ea0b80543129.png)

企業や組織内にいる多数の従業員や組織メンバーを、1つのユーザーアカウントを用いてログイン認証、社内のファイルサーバーやプリンタなどの権限付与、グループ設定などを一元的に管理するために、元々あったNT Domainを大幅に機能強化することで作られたのがActive Directory。ADはWindows 2000で初登場している。

このADは時代の変化とともに、自社のAD内の連携だけでなく、信頼関係を結んでいる別ドメインとの連携を行う機能（Active Directory Federation Services、通称ADFS）が登場してきたりしながら、現在に至るまで使われている。

しかし、ADは一点弱点があった。オンプレミス時代に作られた設計思想であるため、ドメインコントローラをはじめとするサーバーを自社で保有して自社ネットワークの中に置くことが前提。ADのサーバーサイドを全てAWS上に置くといった設計はできない。この記事を執筆しているのが2019年5月だが、この時代にドメインを立てるために新たに物理サーバーを調達したい、という人はほとんどいないと思われる。つまり、ADはすっかり時代遅れになっている。

これに代わって登場したのが、Azure Active Directory、略してAzure AD。マイクロソフトのクラウド名Azureを冠したサービスで、簡単にいうと「マイクロソフトがAzure上に作ったSaaS型のAD」。SaaSなので、ネットワークが異なっても利用できるというメリットがある。よって、新たにドメインを作りたい人の多くがAzure ADを利用している。または、旧来型のADからAzure ADに移行している。

しかし、オンプレミスのADで問題ない企業や、Azure ADを導入したくない企業もある。5年、10年というスパンで考えると、Azure ADに移行する予定だが、当面はオンプレミスのADを使い続けたい。そんな企業がクラウドサービスへのシングルサインオンをどう実現するのがよいか、というのが今回のテーマ。

*なおAzure ADにはSaaSへのシングルサインオン機能が搭載されています。導入希望の方は<a href="https://docs.microsoft.com/ja-jp/azure/active-directory/manage-apps/what-is-single-sign-on">こちら</a>を参照。



##シングルサインオン比較

###Okta

まず、クラウドサービスに対応したシングルサインオン製品の（おそらく）世界最大手は「Okta」だ。

![Okta_logo_mini.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411757/673061b5-d71b-b6c7-fd8a-a419457c4c1a.png)


サンフランシスコにあるバリバリのシリコンバレー企業で、NASDAQ上場企業。日本法人はないが、日本に代理店はあるという状況。 

Oktaは「シングルサインオン」機能と、「オプション」をバラバラに売ってい

価格の詳細は、<a href="https://www.okta.com/pricing/">Oktaの価格ページ</a>を見てもらえればと思うので、以下では
シングルサインオンとActive Directory連携の2つの機能の場合の価格を掲載。

* シングルサインオン: 2ドル/1ユーザー
* Active Directory連携: 4ドル/1ユーザー
    * この機能は「ライフサイクル管理」機能として提供されている
* 月額合計: 6ドル/1ユーザー

Oktaは少額契約の顧客を相手にしたくないためか、契約金額を以下の通り制限しています。
* 契約最低金額: 年額1,500ドル以上
    * 月額に直すと125ドル
    * 6ドルで割ると毎月の契約人数が21人以上

大企業であればすぐにクリアできる数字だが、ベンチャー企業だと結構難しい所も多いと思う。

###Onelogin
![420078-onelogin-logo.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411757/e5364377-39f7-0e5d-ef33-f1d93eed4e1b.jpeg)
OneloginもOktaと同じくサンフランシスコにあるシリコンバレー企業。こちらは未上場。<a href="https://www.onelogin.com/jp">日本語サイト</a>があるが、日本法人の住所などの情報がないので、日本には人員がほとんどいないのではないかと推察（明らかにバーチャルオフィスと分かる住所だと、あえて書かない企業ありますね）。

グローバルではOktaが強いが、日本市場に限ってみると早くから代理店展開を進めてきたOneloginのほうが優勢。価格の詳細情報は、<a href="https://www.onelogin.com/jp/product/pricing">Onelogin価格ページ</a>を見て頂き、以下ではシングルサインオンとAD連携の機能の価格のみお伝え。

* シングルサインオン: 2ドル/1ユーザー (英語のみ）
    * シングルディレクトリ連携含む
    * 日本語が必要な場合は4ドル/1ユーザー

Oktaが6ドルであることを考えると、英語のみ2ドル、日本語対応4ドルというのはかなり安価だが、2ドルプランは「最低25ユーザー (月額50ドル。年額600ドル」、4ドルプランは「最低10ユーザー（月額40ドル、年額480ドル）」という制限があります。それでも、Oktaよりはかなり安い印象。

社内が英語UIで全くOKという会社は2ドルプランで、英語UIだと厳しいという会社は4ドルプランにするのがよいかと思います。

###Ping Identity
![ping.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411757/36ce29c4-875a-823d-f1a3-2b369d65b9c4.png)

「ピング・アイデンティティ」ではなく「ピン・アイデンティティ」と読みます。本社はアメリカ・コロラド州デンバーです（未上場）。こちらも日本に複数代理店がありますが、日本オフィスの情報は掲載されていません。<a href="https://ascii.jp/elem/000/000/687/687103/">過去のニュース記事</a>には日本法人の情報があったので、この記事が掲載された後、ビジネスがうまくいかず閉鎖されたのかもしれません。

<a href="https://www.pingidentity.com/en/initiatives/idaas-pricing.html">価格の詳細情報はこちら</a>です。

* シングルサインオン: 3ドル/1ユーザー 
    * AD連携含む

ライセンス数の制限は記載されていませんので、興味があればPing Identity本社または代理店に確認するのがよいかと思います。なお、日本語版については記載がなかったので英語のみUIと推察します。

###トラスト・ログイン
![logo_trustlogin_en_500px.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411757/29345626-4066-02f2-7cd4-27dc51922771.png)

2019年3月まで「SKUID」という名前で販売されていた製品。開発元はGMOインターネットグループ傘下で、SSL証明書を販売する「GMOグローバルサイン」。今回紹介する製品で唯一の日本で開発された製品。

この製品は、クラウドサービスへのシングルサインオン機能は無料で提供されており、AD連携、多要素認証といったオプションにお金を払うという費用体系。機能1つあたり100円で提供されているが、複数機能を利用する場合は機能おまとめパックの購入がお得。

* シングルサインオン: 無料
* AD連携: 100円/1ユーザー

価格的にはOkta, Onelogin, Ping Identityのいずれよりも安い。機能単体で購入する場合は人数制限なしなので、少人数からでも導入できる点は中小企業やベンチャーに向いている。なお、機能おまとめプランは300円プランは30人以上、500円プランは500名以上から提供されている。サポートなどの機能差がかなりあるので、<a href="https://trustlogin.com/price/">価格表</a>をよくチェックするのがおすすめ。

##どの製品がおすすめか

###価格

![Price.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411757/ebf7a3f6-4ed1-ec57-4333-49f1195ef526.jpeg)


費用が安い順に
* トラスト・ログイン（日本語）: 100円
* Onelogin (英語のみ): 2ドル
* Ping Identity (英語のみ): 3ドル
* Onelogin（日本語）: 4ドル
* Okta (日本語) : 6ドル
となる。

価格差が最大6倍なので、まずは価格が安い順に無料お試し版を試してみて、良いものを選ぶのがよいと思う。

###言語

![language.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411757/671407f6-e9f8-fcf6-5733-e9ae629bae03.jpeg)


* 管理者画面とユーザー利用画面が両方日本語なのは「トラスト・ログイン」のみ。
* 管理画面が英語で、ユーザー利用画面が日本語なのは「Okta」と「Onelogin」だが、Oneloginは4ドル版を選択する必要あり。2ドル版はどちらも英語。
* 管理画面、ユーザー利用画面どちらも英語なのは「Ping Identity」

英語でもOKな外資系企業やベンチャーであれば、日本語を使わない選択肢もありだと思う。が、一般的な日本企業であればちょっと辛いので、少なくともユーザー画面は日本語を提供したいところ。システム管理者が英語苦手な場合は、管理画面も日本語のトラスト・ログインがよい。

トラスト・ログインの弱みは多言語対応。日本語環境のみであれば最強。しかし、多くの国で展開している企業の場合、スペイン語の従業員がいたり、中国語の従業員がいたりするが、そうした多言語対応はできていない（はず）。Okta, Oneloginはその辺りの多言語対応ができている感じ。Ping Identityについてはよく分かりません（すみません）。

###機能・使いやすさ

![UX.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411757/bc2a8c02-e04e-9b0b-9435-b16694755c68.jpeg)


機能については、価格と言語で足切りした上で、無料お試し版を使ってから判断するのがよいでしょう。どの製品にはどの機能がある、ないという話は複雑すぎるので省略します。

###サポート

![support.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411757/b680e3c6-24e3-a222-4c10-7708e7cf3c62.jpeg)


メーカーとの距離が最も近いのが、日本に本社がある「トラスト・ログイン」。1000名超程度の会社が<a href="https://trustlogin.com/casestudy/interview07/page2.html">開発元に機能追加を依頼したら作ってくれた</a>という事例が掲載されているのが日本企業ならではという感じ。外資系企業では、よほど大きな見込み客でもない限り、こうした機能追加はまず無理です（小職、以前外資系企業で営業していたのでその辺詳しいです）。日本語で、代理店ではなくメーカーから直接サポートが受けられるのは強みです。

他は、Okta, Onelogin, Ping Identityともに日本にオフィスがあるかないか分からない状態なので、サポートは代理店が中心になる。アメリカとの時差を考えると、少し込み入った問題で即レスポンスを得るのは難しい場合が多いのではないかと推察（間違っていたらすみません）。

###まとめ

一番安価なトラスト・ログインをまず試して、それでだめだったら他の製品を試すという流れでよいのではないかと思います。

####無料お試し登録リンク

* <a href="https://portal.sku.id/users/sign_up">トラスト・ログイン</a>
* <a href="https://www.okta.com/free-trial/">Okta</a>
* <a href="https://www.onelogin.com/jp/signup">Onelogin</a>
* <a href="https://www.pingidentity.com/en/lp/d/p14e-trial.html">Ping Identity</a>