最近流行り(?)のIDaaSについてまとめます

# IDaaSとは
Identity as a Serviceの略称で、
アイデンティティ（Identity）の管理をSaaSやIaaSなどと同じく
クラウドにて管理するサービスのこと

簡単に言うと、
「アプリケーションで必要とする認証まわりの機能（ユーザー管理・権限管理など）を提供してくれる」
クラウドサービス。

## 使うと何がいい？
### サーバーサイドの認証基盤を作らなくていい
アプリ開発者は、お客様に価値を提供するためにアプリを開発します。
しかし、価値がある機能だけ作ればよいわけではないのが現状。

ユーザー管理やセキュリティなど、一般的に必要とされる機能も毎回作らなければなりません。
最近は、「個人情報をできるだけ持たない」という意識も強くなってきているので、
IDaaSに依存すれば、個人情報を扱うことの負荷も軽減されます。

### クライアントサイド（アプリ）はライブラリをいれるだけ
認証の種類に合わせたライブラリを使う
※各IDaaSから提供されます

- SAML
    - 企業内やより高いセキュリティを求められるシステムで利用する
- OpenIDconnect
    - facebookやtwitterなどの"世の中に広まっている"アカウントを利用して認証する時によく使われる仕組み
    - 不特定多数のコンシューマ（一般消費者）が使うアプリなどでよく利用される　　
- OAuth
    - WebAPIなどに利用

など

### サーバー管理をしなくていい
データのバックアップやサーバ・ハード保守、脆弱性への対応などすべてIDaaS側で対応してくれるため、
運用コストが少ない。

### シングルサインオンできる
複数のアプリがある場合、同じIDaaSを利用すれば、
一回のログインで、すべてのアプリへの遷移が可能

## 不利益はある？

下記にポイントだけ記載しますが、どれも自分達で認証基盤を作って、
担保するほうが負荷が高い要件だと思われます。
短所であり、長所でもあります。

### 可用性
IDaaSが落ちると、アプリにログインできなくなります。
自分で開発してもそうですが、クラウドサービスなので可用性は100%ではないですし、
復旧の速度もそのサービスの品質次第になります。

各クラウドサービスのSLA・SLOは要チェック

### 保守性
バグがあったとしても、
直してくれるのを待つしかありません。

### 安全性
セキュリティ面は基本IDaaS側で担保してくれますが、
IDaaS側で情報漏えい等があった場合、無傷ではいられません。

### 機能性
IDaaS側でカバーしていない機能がある場合、
最悪自分で作らないといけないケースも。

## 各IDaaSひとこと説明　※かなり私見がはいります
### Okta
IDaaS最大手とされているが、日本ではあまり広まっていない印象。
日本語対応されているという情報もあったが、設定で日本語に変えても、
管理画面は英語のままだった。利用者向け画面だけ対応されている？
UIは綺麗。日本向けに提供できるのであれば使ってみたい。

### Azure Active Directory
名前で勘違いしてしまうことが多い。
従来のActiveDirectoryを想像してしまうが、
他のIDaaSと同じようなポータル機能・ActiveDirectory連携機能などを持つもの。
名前がまぎらわしい、かつAzureのUIが好きになれない。

### Oracle Identity Cloud Service
仕事で一年ほど利用している。
WebAPIが充実しているので、利用者側で開発することが可能。さすがOracle。
サポート品質は悪い。さすがOracle。　※日本が窓口、開発は米国なので、非常にレスポンスが悪い。
他のIDaaSと比較すると好きなところも多い。
日本語化対応はちゃんとされている。

※2019-08-30追記
Oracle Identity Cloud ServiceはOracleCloudInfrastructureに吸収された。
Oracleからは自分で移行しろとのお達し。
営業の発言も多々間違いがあり、oracle内部で統制がとれていない状態。
今はまだ使うべきではない。

※2019-11-13追記
OracleCloudInfrastructure契約するも、、デプロイ途中なんじゃないかという環境　
※見るたびに画面表示が変わる
あるサービス(OracleIntegrationCloud)のインスタンスを作ろうとしても、
何日たっても作成が完了しない  など...
もうダメだ....

※2021-12-21追記
最近は安定していますが、サービス移行する模様です。
Oracle Identity Cloud Service → OCI IAM

### OneLogin
AWSのサポートからも紹介される程度に知名度が高い。
UIは非常に綺麗。
だが、WebAPIの作りが弱い印象。
他のシステムとの連携や、ワークフローの自動化を自分で作り込むのが難しそう。

### AWS Single Sign-On
AWSのサービスの中では非常に敷居が高い。
ActiveDirectoryが必須かつ、企業の子アカウントになっている場合は利用できない。
AWSなので、最高のサービスであることは想像できる。
敷居がさがると嬉しい。

### TrustLogin(元SKUID)
最近名前がTrustLoginに変わった。アイコンはダサくなった。
対応機能があげられているが"実装予定"で、現在実装されていないものが多すぎる。
UIは非常に綺麗。
公式ブログは情報量が多く勉強になるが、宣伝が激しい。

### Auth0
まだ試してはいないが、APIの質が良さそうなので期待大。
今選ぶならコレにチャレンジしたい。

2021-01-17 追記
使ってみたところ今の所不満はないです。
無料でも7000ユーザーまで利用できたりと便利。

※ガートナーのIDaaS調査結果(2017)
https://www.americabu.com/okta
![image.png](https://qiita-image-store.s3.amazonaws.com/0/172015/0b1c7e7d-69b1-457f-5c10-ce556400b3d7.png)

## IDaaSのデータ構造
どのIDaaSもだいたいこの構造です。
※グループorロールだったり、グループとロールが両方あったりはあります。

各ユーザーはグループやロールに属し、
各グループやロールはアプリケーションに紐づく形で
権限管理をしています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/172015/c6ea2dc7-888c-b015-8bfa-84e3a9b5eb16.png)

※用語説明
IdP：IdP（Identity Provider）とは、認証情報の提供者のこと。この記事ではIDaaSを指しています。
SP：SP（Service Provider）とは、認証情報の利用者のこと。この記事ではIDaaSを利用するアプリを指しています。

## Oracle Identity Cloud Serviceについて
ここからは、仕事で利用している「Oracle Identity Cloud Service」(IDCS)について簡単にまとめます。
### 機能
- 管理画面
    - ダッシュボード
        - 保持しているデータの数が確認できる（ユーザー数、アプリケーション数など）
    - アプリケーション管理
        - カタログからの簡単アプリ登録や、Oauth・SAMLアプリケーションの細かい設定を自分でしたりできる
    - グループ管理
        - アプリケーションやユーザーに紐付けるグループが作成できる
    - ユーザー管理
        - IDaaSの利用者を登録できる
    - レポート
        - ログイン履歴の確認・ダウンロードができる
        - 誰がどのアプリケーションを利用しているかの履歴などもとれる
    - セキュリティ
        - パスワードポリシーやMFA設定、アクセスできるネットワーク制限など、多岐にわたるセキュリティ機能がある
        - 管理者権限の委任機能もある
        - 外部IdPとの連携
- ログイン画面
    - 一般的なID・パスワードを入力する画面
    - デザインのカスタマイズは可能
    - 外部IdPを利用したログインの追加などのカスタマイズもできる
- ポータル画面
    - ログインした後、自分の利用できるアプリケーションの一覧がアイコンで表示される
    - リンクを押すと、SAMLなりでセキュアなSPへの遷移ができる

### コスト
以下を参照ください。
https://cloud.oracle.com/ja_JP/identity/pricing


## Oracle Identity Cloud Service　と　OneLoginの比較
※2018/11時点での確認できた内容。
　内容の不備や現在の仕様と異なる点はご承知ください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/172015/6ec95dfb-fbf0-6814-b8da-f235ddc46188.png)