Auth0の機能を調べてみた

## 概要

Auth0というiDaaSがありますが、機能的にどういったものが提供されているのか調べてみました。


## Auth0とは

Auth0(オースゼロ)とはAuth0, Inc.が提供するiDaaS(アイダース)で、Identity as a Serviceの略となりクラウドでID管理・認証機能などを提供してくれるサービスです。
iDaaSが提供する機能としては認証・シングルサインオン、ID管理・連携、認可、ログなどによる監査などがあり、Auth0もそれらを提供しています。

Auth0, Inc.は2017年に株式会社NTTドコモ・ベンチャーズが出資していたり、日本企業とのパートナーシップも増えており、日本での活動も活発になってきています。

昔はIDとパスワードでログインできればよかった認証機能でしたが、現在では、SNSを利用したソーシャルログイン、企業に求められるシングルサインオン、高度なセキュリティを実現する多要素認証(MFA)など、利便性と高度なセキュリティが求められています。それらをいちから実装・提供するには多大なコストがかかります。

Auth0を利用すれば、ID管理や認証認可に関わる充実した機能を少ない開発コストで活用することでDX(開発者体験)を向上し、企業のDX(デジタルトランスフォーメーション)を推進できます。


Auth0, Inc.への出資について | 株式会社NTTドコモ・ベンチャーズ
https://www.nttdocomo-v.com/release/vmm7qis4uc/
Partners - Auth0
https://auth0.com/partners

[2020～2021年版] ID管理にもクラウドの波 「IDaaS」がもたらす新しい価値とは？！ – サポート − トラスト・ログイン byGMO【旧SKUID(スクイド)】
https://support.trustlogin.com/hc/ja/articles/115010291808

IDaaS（Identity as a Service）とは｜クラウド型シングルサインオン・アクセスコントロール（IDaaS） OneLogin - サイバネット
https://www.cybernet.co.jp/onelogin/product/idaas/


## 特徴と機能

Auth0には以下のような特徴があります。

- 拡張性
- シンプルなAPI
- ユーザーが中心
- 業界標準プロトコル
- SDK
- 分析
- 多要素認証
- マルチデバイス
- スケーラビリティと信頼性
- シングルサインオン
- ハイブリッドなクラウド環境
- ソーシャルログイン

Why Auth0 - Auth0
https://auth0.com/jp/why-auth0

機能的にもiDaaSとして必要となるものを兼ね備えています。
それぞれどういった機能なのか、他のiDaaSだとどうなのか、調べてみます。

- ユニバーサルログイン
- シングルサインオン
- 多要素認証
- 漏洩したパスワードの検知
- ユーザー管理
- パスワードレス
- マシーン to マシーン
- Auth0 Marketplace

Auth0: Secure access for everyone. But not just anyone.
https://auth0.com/jp/


### ユニバーサルログイン

Auth0のユニバーサルログインはログインフローの実装をAuth0に任せることで、アプリケーション側でログイン機能を実装を最小限にすることができます。

Auth0 Universal Login
https://auth0.com/docs/universal-login

>(Google翻訳)ユニバーサルログインは、認証サーバーの重要な機能であるログインフローのAuth0の実装です。ユーザーがIDを証明する必要があるたびに、アプリケーションはユニバーサルログインにリダイレクトされ、Auth0はユーザーのIDを保証するために必要な処理を実行します。


ユニバーサルログインについては(Auth0が準拠しているかはわかりませんが、、、)下記で詳しくまとめてくれていますが、自前で実装するには大変そうです。

Universal Login（ユニバーサルログイン）についてのまとめ - Qiita
https://qiita.com/toshiaki_takase/items/9c5147592572733cc236

>ユニバーサルログインは、ERC1078（ERC1077）をさし、Alex Van de Sandeによって提唱されたアカウントの登録・ログインパターンのことです。
>これによって、ユーザーに負荷なく簡単にアカウントをコントロールできるようにしようとしています。

似たような機能を提供しているサービスとして、Amazon Cognitoがあります。

Amazon Cognito（ウェブ/モバイルアプリのユーザー管理）| AWS
https://aws.amazon.com/jp/cognito/

>Amazon Cognito を使用すれば、ウェブアプリケーションおよびモバイルアプリに素早く簡単にユーザーのサインアップ/サインインおよびアクセスコントロールの機能を追加できます。Amazon Cognito は、数百万人のユーザーにスケールし、Facebook、Google、Amazon などのソーシャル ID プロバイダー、および SAML 2.0 によるエンタープライズ ID プロバイダーを使用したサインインをサポートします。

どちらを使うべきか？と考える場合、対応するソーシャルログインを充実させたい場合はAuth0を選択するのがありかもしれません。Auth0だと10以上のサービスに対応しておりなんとLINEにも対応しています。

Auth0、LINE Loginの統合サポート提供開始
https://auth0.com/blog/jp-auth0-integrates-social-login-for-line/


### シングルサインオン(SS0)

シングルサインオンは身近なところでいえば、Googleで実装されています。Googleのいずれかのサービスでログインすると他のサービスではログインせずとも利用できるあれです。

SSO ログイン：主な利点と実装
https://auth0.com/blog/jp-sso-login-key-benefits-and-implementation/

>シングル サインオン(SSO)のログインはユーザーが単一の資格情報を使ってアプリケーションにログインすることを言い、複数のアプリケーションに自動的にサインインします。SSOログインを使用すると、ユーザーはユーザー名やパスワードなどさまざまなログイン資格情報を使わなくても、複数のソフトウェアシステムにアクセスできます。
>
>SSO ログインの非常に一般的な例は Google のソフトウェア製品への実装です。ユーザーが Gmail にログインすると、このユーザーは自動的に YouTube、Google Drive、Google フォト、およびその他の Google 製品にアクセスできます。

Auth0のSSOは15以上のクラウドアプリケーションを標準サポートしているそうです。

>Auth0 を使用すると、数回のクリックでSSOログインが可能です。 Auth0 は、以 Microsoft Azure Active Directory 、 Box 、 CloudBees 、 Concur 、 Dropbox 、 Microsoft Dynamics CRM 、 Adobe Echosign 、 Egnyte 、 New Relic 、 Office 365 、 Salesforce 、 SharePoint 、 Slack , Springcm 、 Zendesk 、および Zoom などを含む15以上のクラウドアプリケーションを標準サポートしています。

また、Auth0を利用すると自前のシステム・サービスをSSO対応することもできます。

>Auth0 アカウントをお持ちでない方は、 こちらからサインインしていただければ、アプリケーションへの SSO ログインが可能になります。アプリで SSO を実装する方法などについては、包括的な SSO ログイン ドキュメントをご覧ください。また、Auth0 を使ってシングルページアプリや標準 Web アプリ で SSO を実装する方法を示す コードサンプルも提供していますのでご覧ください。
>

SSOに対応するiDaaSは数多くあるため、SSO以外の機能で必要なものが提供されているかなどの視点で選定する必要がありそうです。

#### SSOを提供しているiDaaS

##### Okta

https://www.okta.com/jp/

>ユーザーをすべてのアプリと結びつける。
>認証をすべてのアプリに組み込む。
>Okta Identity Cloud は、すべてのアイデンティティを保護してすべての顧客とつながるための安全な基盤を提供します。

##### OneLogin

https://www.onelogin.com/jp

>安全なアクセス
>すべてのユーザー、すべてのアプリケーション、すべてのデバイス
>OneLoginは、企業の効率化および安全のためにアイデンティティおよびアクセス管理をシンプルにしました

##### AWS Single Sign-On

https://aws.amazon.com/jp/single-sign-on/

>複数の AWS アカウントおよびビジネスアプリケーションへのシングルサインオン (SSO) アクセスを一元管理

##### TrustLogin

https://trustlogin.com/lp/list/

>面倒なID・パスワード管理の不安・悩みは
>企業向けシングルサインオン

##### Azure Active Directory

https://azure.microsoft.com/ja-jp/services/active-directory/

>ユニバーサル ID プラットフォームでビジネスを保護
>Azure Active Directory (Azure AD) エンタープライズ ID サービスは、シングル サインオンと多要素認証を提供することにより、99.9 パーセントのサイバーセキュリティ攻撃からお客様のユーザーを保護します。

##### VMware Workspace One

https://www.vmware.com/jp/products/workspace-one.html

>従業員の利用体験を最適化するインテリジェンス ベースのデジタルワークスペース プラットフォーム

##### CloudGate UNO

https://www.cloudgate.jp/lineup/uno.html

>パスワードレス認証をはじめとした強固な認証機能と柔軟なアクセスコントロールでセキュリティを強化


### 多要素認証(MFA)

Auth0が提供する多要素認証(MFA)はスマホアプリによるプッシュ通知、SMS認証、音声通知、ワンタイムパスワード、メール通知、Cisco Duoなどから選択することができます。

Multi-factor Authentication in Auth0
https://auth0.com/docs/mfa#related-blog-posts

>(Google翻訳) 多要素認証（MFA）は、ユーザーに複数の識別情報の提供を要求することにより、ユーザーのIDを検証する方法を提供します。これにより、別のアプリケーションから侵害された可能性のあるユーザー名とパスワードを使用している場合でも、有効なユーザーのみが自分のアカウントにアクセスできるようになります。

MFAはユースケースに合わせて管理できるそうです。

Multi-Factor Authentication Factors
https://auth0.com/docs/mfa/mfa-factors

>(Google翻訳) 環境に応じて、MFAを管理するさまざまな方法があります。
>
>- B2B：顧客はユーザーのMFA要素を管理します。
>- B2C：エンドユーザーは、[マイMFA設定]ページを介して独自のMFA要素を管理します。
>- B2E：ユーザーのMFA要素を管理します。


### 漏洩したパスワードの検知

他のiDaaSにも機能としてありそうですが、Auth0は主要機能としてあげています。
サービスプロバイダー、エンドユーザーそれぞれに対して対策が取られています。

Breached Password Detection - Auth0
https://auth0.com/jp/breached-passwords

>パスワードの侵害の検知により、第三者のデータ侵害によるクレデンシャルの漏洩から貴社のユーザーを守り、通知を行います。貴社のユーザーがパスワードをリセットするまでアクセスを制限することも選択できます。


### ユーザー管理

Auth0ではダッシュボードでユーザー管理することができます。

Dashboard - Auth0
https://auth0.com/jp/how-it-works

>Auth0のダッシュボードでは、簡単にアプリケーションに接続し、アイデンティティプロバイダーを選び、ユーザーを追加し、ルールをセットアップし、ログインページをカスタマイズし、分析にアクセスできます。開発者にとって容易で理想的な環境を提供します。
>
>ユーザーの追加や削除、プロフィールや認証属性の修正、ログインでの問題の切り分けが、シンプルかつ直感的でパワフルなWEBインタフェースを使用して、数分で可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/48549/85004c66-d598-7fd7-1600-212b1997c217.png)


### パスワードレス

Slackの「マジックリンクをメールで送信」的な機能をAuth0も提供しています。

Log in without Passwords: Introducing Auth0 Passwordless
https://auth0.com/blog/auth0-passwordless-email-authentication-and-sms-login-without-passwords/

>(Google翻訳) Auth0 Passwordlessは、電子メールまたはSMSに基づくドロップイン認証システムであり、セキュリティとユーザーエクスペリエンスを向上させます。
>

Passwordless: SMS Login and Email Authentication - Auth0
https://auth0.com/passwordless

>(Google翻訳) Lock Passwordlessは、デスクトップ、タブレット、およびモバイルデバイス用のSMSおよび電子メールによる認証のベストプラクティスをカプセル化する埋め込み可能なウィジェットです。
>

### マシーン to マシーン

ざっくり言うとサービス間、デーモンとバックエンド間、CLI クライアントと内部サービス間、IoT ツール間などでクライアント資格情報を受け渡しして保護されたリソースにアクセスできる機能です。

機器間（M2M）認証を使用する
https://auth0.com/blog/jp-using-m2m-authorization/

>機器間通信はほとんどどんなモダンアーキテクチャにも必要です。OAuth 2.0 および Auth0 はアーキテクチャで容易に使用できるように構築ブロックを提供します。バックエンド間からサービス間、デーモン間、IoT機器間、そして CLI ツール間でさえ、クライアント資格情報の付与は自律や非自律システム間での認証問題に対するシンプルで、有効なアプローチです。
>

他のiDaaSでも提供されているかもしれませんが、ざっと調べた限りAuth0が一番情報が豊富で利用できそうなイメージが湧きました。

### Auth0 Marketplace

Auth0でソーシャルログインやSSO機能を追加して拡張、カスタマイズする際に利用できるサービスです。

Introducing Auth0 Marketplace
https://auth0.com/blog/introducing-auth0-marketplace/

>(Google翻訳) Auth0 Marketplaceを使用すると、Auth0ソリューションの拡張とカスタマイズがより簡単かつ迅速になります。
>
>🤞信頼済み—マーケットプレイスにあるすべての統合はAuth0によって事前検証されているため、信頼できることがわかります。

上記記事にありますが、GitHubのような連携可能な外部ソリューションを探し、連携するための情報を提供してくれます。



## まとめ

ざっとAuth0について調べてみましたが、エンジニア視点でみると認証・認可を実現するのに開発コストを少なくできそうで魅力的なサービスだと感じました。これからひととりお試ししてみたいと思います。

## 参考

Auth0, Inc.への出資について | 株式会社NTTドコモ・ベンチャーズ
https://www.nttdocomo-v.com/release/vmm7qis4uc/
Partners - Auth0
https://auth0.com/partners

[2020～2021年版] ID管理にもクラウドの波 「IDaaS」がもたらす新しい価値とは？！ – サポート − トラスト・ログイン byGMO【旧SKUID(スクイド)】
https://support.trustlogin.com/hc/ja/articles/115010291808

IDaaS（Identity as a Service）とは｜クラウド型シングルサインオン・アクセスコントロール（IDaaS） OneLogin - サイバネット
https://www.cybernet.co.jp/onelogin/product/idaas/

Why Auth0 - Auth0
https://auth0.com/jp/why-auth0

Auth0: Secure access for everyone. But not just anyone.
https://auth0.com/jp/

Auth0 Universal Login
https://auth0.com/docs/universal-login

Universal Login（ユニバーサルログイン）についてのまとめ - Qiita
https://qiita.com/toshiaki_takase/items/9c5147592572733cc236

Amazon Cognito（ウェブ/モバイルアプリのユーザー管理）| AWS
https://aws.amazon.com/jp/cognito/

Auth0、LINE Loginの統合サポート提供開始
https://auth0.com/blog/jp-auth0-integrates-social-login-for-line/

SSO ログイン：主な利点と実装
https://auth0.com/blog/jp-sso-login-key-benefits-and-implementation/

Multi-factor Authentication in Auth0
https://auth0.com/docs/mfa#related-blog-posts

Multi-Factor Authentication Factors
https://auth0.com/docs/mfa/mfa-factors

Breached Password Detection - Auth0
https://auth0.com/jp/breached-passwords

Dashboard - Auth0
https://auth0.com/jp/how-it-works

Log in without Passwords: Introducing Auth0 Passwordless
https://auth0.com/blog/auth0-passwordless-email-authentication-and-sms-login-without-passwords/

Passwordless: SMS Login and Email Authentication - Auth0
https://auth0.com/passwordless

機器間（M2M）認証を使用する
https://auth0.com/blog/jp-using-m2m-authorization/

Introducing Auth0 Marketplace
https://auth0.com/blog/introducing-auth0-marketplace/