認証プラットフォーム Auth0 とは？

2017/06/28にドコモベンチャーズがAuth0に出資をしたというニュースが流れましたが、Auth0とはどんな会社で、どんなサービスを提供していのでしょうか？

# Auth0とは
Auth0 Inc.は2013年に米国Microsoftに在籍していたメンバーを中心に創業した会社で、Washington州Bellevueに本社があります。創業メンバーはEugenio Pace(CEO), Matias Woloski(CTO)　などMicrosoftに在籍していたメンバーのほか、Node.jsの認証フレームワークである"Passport"の開発者であった Jered Hanson, AT&T, Amazon.com, 国防総省での勤務経験のある Eugen Koganも創業メンバーです。

# Auth0 統合認証プラットフォーム
Auth0はWebアプリやモバイル、APIなどに対して認証・認可のサービスをクラウドで提供している、いわゆるIDaaS (Identity as a Service)ベンダーです。企業がもつWebアプリケーションやAPI, Native Mobile Appなどでユーザー認証や認可、セキュリティを組み込みたいけれでも実装が難しい・・・という方にオススメのソリューションを提供しています。(下の画像をクリックすると、Auth0の概要を説明するビデオを見ることができます)


<p><a href="https://auth0.com/docs/overview?wvideo=s15ysw45uy"><img src="https://embedwistia-a.akamaihd.net/deliveries/25fa8c921cfed649925ebd725c41dc7b0ec64d4f.jpg?image_play_button_size=2x&amp;image_crop_resized=960x540&amp;image_play_button=1&amp;image_play_button_color=7b796ae0" width="400" height="225" style="width: 400px; height: 225px;"></a></p><p><a href="https://auth0.com/docs/overview?wvideo=s15ysw45uy">Auth0 Developer Overview</a></p>

## 既存の統合認証製品と何が違うの？ 
Auth0は、Mobile Native AppやWeb API、Single Page Applicationにも対応することができるOAuth 1.0/2.0やOpenID Connectと言ったオープンな認証・認可方式に対応しています。もちろんこれまでのWebアプリケーションにも対応しています。
これまでのシングルサインオン製品は、エンタープライズ向けでADやLDAP認証などを行い、CookieやHTTPヘッダーなど認証情報を埋め込むなどして、Webアプリケーションへの認可を行なっていましたが、独自プロトコルを使用しており、実装が非常に難しく時間がかかるという問題点がありました。またsalesforceやGoogle AppsなどへのアクセスにはSAMLトークンを使用してアクセスをするFederationという機能がありますが、モバイルNativeアプリやWeb APIにはなかなか対応できないという問題点もありました。

Auth0は、OAuth 1.0/2.0やOpenID Connectに対応しており、様々なモバイル用SDK、従来の各種Webアプリケーション、SPA (Single Web Page), CLI (Command Line Interface)などに対するAPIやサンプルソースを [Github](https://github.com/auth0) で公開しています。 もちろんEnterprise SaaSアプリケーションにはSAMLやWS-Federationにも対応しています。 またユーザーストア(Connection)にはAuth0標準(ビルトイン)であるMongoDBはもちろんのこと、企業がすでに使用している各種DBやActive Direcotry,LDAPなど複数のユーザーストアを利用することができるだけでなく、様々なソーシャルネットワークのアカウントを利用したユーザ認証・認可を簡単に利用することが可能です。
さらに多要素認証にも対応しており、Auth0が提供しているAuth0 Guardian MFAだけでなく、Google AuthenticatorやDUO Securityなどの多要素認証(MFA)も利用でき、EmailやSMSを介してOTPを送信する、Passwordless認証にも対応しています。

Connection例：
1. [Database Connections](https://auth0.com/docs/connections/database): (Auth0標準、もしくは外部Databaseを利用)
2. [Social network logins](https://auth0.com/docs/identityproviders#social): Google, Facebook, Twitter 及び OAuth1.0/2.0もしくはOpenID Connect provider
3. [Enterprise directories](https://auth0.com/docs/identityproviders#enterprise): LDAP, Google Apps, Office 365, ADFS, AD, SAML-P, WS-Federation,その他
4. [Passwordless systems](https://auth0.com/docs/connections/passwordless): TouchID, SMSやEmailを介したワンタイムコード
 
## 豊富なサンプルソース
アプリケーションとAuth0間で使用される標準プロトコルは、最新で軽くて利用や統合がしやすいOpenID ConnectやOAuth2.0です。Auth0は[主だったプラットフォーム](https://auth0.com/docs/support/matrix#sdks) (.NET, Java, PHP, Python, node, iOS, など)向けのSDKを提供していますが、Auth0 SDKを使用することは必須ではありません。認証・認可用にRESTfulなAuthentication APIを公開しており、HTTPリクエストを送信することができればAuth0と連携することが可能です。Native, SPA, Web/App Server, CLIなど約80種類のフレームワークに対するサンプルプロジェクトをgithubに公開しており、これを利用することで簡単に既存アプリケーションをAuth0と連携することができます。(主だったものはAuth0の [ドキュメント](https://auth0.com/docs/) ページや管理ダッシュボードのApplicationページから構成方法も含めてアクセス可能です)。Auth0はその他にもWS-FederationやSAMLと言った一般的なFederation Protocolにも対応しており、ADFSや外部IdPとAuth0に対応させたアプリケーションに対してはSAML SPとして、SAML対応のSaaSアプリケーションにはSAML IdPとして簡単に連携することができます。
<img width="584" alt="Create_Client.png" src="https://qiita-image-store.s3.amazonaws.com/0/189613/fed4b64e-5974-3282-2fbe-07e5040e134b.png">

<img width="529" alt="Client_Regular_WebApp.png" src="https://qiita-image-store.s3.amazonaws.com/0/189613/6cd41c13-1ca4-2e9a-bff5-9278e8135a06.png">

連携するプラットフォームを選択すると、管理画面からサンプルプログラムのダウンロードや実際にサンプルプログラムを使って認証を行うまでに必要な手順や定義が表示されます。開発者は画面に表示された手順に従うだけで簡単にAuth0での認証サービスを利用することができます。
<img width="570" alt="スクリーンショット 2017-08-09 13.26.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/189613/90eb5c80-b3f0-dd16-c09e-bc19d248ed29.png">


## ソーシャルアカウント連携ツールとして
BtoCなどのサービスでは、組織が提供しているサービスにいかに利用者を増やしていくかが課題となリますが、利用者は各サービスごとにユーザー登録やパスワードの設定をすることは利便性の観点から避ける傾向があります。Auth0の認証プラットフォームを利用すると、自分で開発したアプリ側では特に特別なコーディングをすることなく、スライドボタンをオンにするだけでfacebookやGoogle, Twitter, dAccountなどと30種類以上のソーシャルアカウントで簡単サインインができてしまいます。開発者は、複雑で面倒なOAuthの実装やトークンの管理やセキュリティなどに煩わされることなく、機能の開発に専念することができます。

<img width="633" alt="Social_Connection2.png" src="https://qiita-image-store.s3.amazonaws.com/0/189613/ff3c02a4-b675-8953-1497-23b65d0b2e51.png">

標準でリストに載っていないソーシャルネットワークでも OAuth2.0やOpenID ConnectのOP (OpenID Provider)に対応しているのであれば、Custom Social Connection Extensionを利用することソーシャルアカウント連携をすることが可能です。
<center><img width="324" alt="スクリーンショット 2017-08-09 13.35.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/189613/6344ca04-8839-109d-3a0f-d716b42f0cc2.png"></center>

## Serverless環境利用による拡張機能の提供
一般的なSaaSベースの認証プラットフォームの場合、導入コストが安くすぐに利用できるという反面、提供している機能以外にはカスタマイズをすることができないということが多いです。Auth0は、自社開発のServerlessプラットフォーム (webtask)をAuth0利用ユーザーに提供しており、Node.jsやC#を利用して認証・認可や管理運用などに関するカスタマイズを行うことができます。そのため認証時のルール設定や拡張機能をSaaS環境でも実装することができる点も他のSaaSベースの認証プラットフォームとの大きな違いです。このServerless環境はAuth0の認証サービスとは別にサービス利用をすることも可能なので、興味のある方はAuth0のサイト ( https://webtask.io/ もしくは https://auth0.com/extend/ ) にアクセスしてみるといいです。

##導入モデル
Auth0は通常クラウドでサービスを提供していますが、プライベートインスタンス(PI)で提供することもできます。PIはAuth0を特定の企業用にインストールした環境です。導入環境はAuth0が直接管理しているクラウド環境もしくは企業が管理しているクラウド環境(AWS, Azure, Rackspace, DigitalOcean)、もしくはオンプレミス環境に導入することもできます。

#最後に
Auth0が提供する機能を簡単に説明してみましたが、いかがですか？
Auth0のサービスは契約をしなくとも無償で評価(フリートライアル：2２日間)をすることができます。フリートライアルは、[Auth0のホームページ](https://auth0.com/jp "http://auth0.com/jp")にアクセスし、画面右上の<A HREF="https://auth0.com/signup?utm_campaign=auth0_overview_jp&utm_source=qiita"><img width="123" alt="スクリーンショット 2017-09-07 21.59.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/189613/c0ffbce4-d802-6fdd-ea2a-aa4a7ccd775b.png"></a>をクリックするとトライアル登録が行うことができます。ユーザー登録にはGitgubやGoogle, Microsoftアカウントを使用してサインアップすることできますので、試してみてはいかがでしょうか？