サーバーワークスでは様々なSaaSを利用していますが、ユーザーIDを管理するための IDaaS は OneLogin を使っています。 今回は、OneLogin で 株式会社ヌーラボの Cacoo へシングルサインオンする設定を検証してみました。
今回のシナリオ
従来も Cacoo へのログインは、エンドユーザーの操作感としてはOneLogin経由であったため、見た目は一元管理されていました。 ただし、代理入力であり、ヌーラボアカウントのユーザー名・パスワードを OneLogin に登録することで実現していました。

この問題点は、パッと思いつく範囲でも以下のようなものがあります。
- 入退社や人事異動時に設定箇所が増えたり、漏れたり、いろいろと煩雑
- パスワードがわかれば IDaaS 経由しないでも SaaS へはログインできる
そこで SAML2.0 によるシングルサインオンの導入を検討します。 Nulab Pass というサービスを購入すれば、実現できます。

Nulab Pass のトライアルの申し込み
Nulab Pass は利用料金がかかりますが、30日間無料トライアルがあります。
申し込みが完了すると組織設定のプランに以下のように表示されます。

OneLogin と Nulab Pass の設定
それでは設定していきましょう。OneLogin と Nulab Pass の連携をするため、両者の設定画面で行ったり来たりします。
OneLogin にアプリケーションを追加
OneLogin には、「Nulab」という設定が用意されているため、それを利用します。
OneLogin > Administration > Applications > Add App

「Nulab」で検索すると2つ表示されるので、「SAML2.0」 の方をクリックします。

「Display Name」 を入力し、「Save」します。Display Nameは何でもいいのですが、ここではNulab (SAML)としました。

ヌーラボ組織IDの設定
Nulab > 組織設定 > 組織詳細 > プロフィール

任意の文字列をヌーラボ組織IDとして設定します。
※小文字の英数、またはハイフンのみ使用できます。また、ハイフンは先頭と末尾には指定できません。
ドメイン所有権の確認
SAML連携をする前に、自分がドメイン所有権があることをNulabに対して証明する必要があります。DNSサーバに指定されたTXTレコードを設定することでドメイン所有権があると証明ができます。
Nulab > 組織設定 > 組織詳細 > ドメイン

「1 認証コードを追加しましょう」の 認証コード をコピーします。
DNSサーバ の設定
ドメインのTXTレコードに認証コードを追加します。DNSサーバによって設定方法は異なりますが、以下は Amazon Route 53 の例です。

Nulab > 組織設定 > 組織詳細 > ドメイン

「2 ドメインを認証しましょう」に 自分のドメイン名 を入力し、「認証する」をクリックすると、ドメイン一覧に認証済として表示されます。
SAML設定
OneLogin > Application > Nulab > Configuration

「Nulab > 組織設定 > 組織詳細 > プロフィール」を参照し、組織の スペースキー を入力します。
OneLogin > Application > Nulab > SSO

SAML Signature AlgorithmはデフォルトでSHA-1が選択されていますが、セキュリティ向上のためSHA-256に変更します。証明書は期限に気をつけて必要に応じて変更します。「OneLogin > Security > Certificates」で新規作成もできます。
ここで SAVE しましょう。
Nulab > 組織詳細 > 認証

「SAML認証は無効です。」と表示されているので、「変更」をクリックします。

SAML認証の設定をします。下記表を参照し、OneLoginから値をコピペします。
| SAML認証の設定 | OneLoginの以下からコピペする |
|---|---|
| IdP Entity ID | Application > Nulab > SSO Issuer URL |
| IdP Endpoint URL | Application > Nulab > SSO SAML 2.0 Endpoint (HTTP) |
| X.509 Certificate (Base64) | Certificate > Certificates X.509 Certificate |

SAML認証が有効化されました。
ヌーラボアカウントの管理対象アカウントへの移行
ここでは既存アカウントの中から1アカウントだけ選択し、SAML認証に移行してみます。移行後のアカウントタイプは「管理対象アカウント」と呼ばれます。
Nulab > 組織設定 > メンバー

既存アカウントを選択し、 「既存アカウントを移行」 をクリックします。

「〜人中1人を管理対象アカウントに移行します。」と確認メッセージが出るので、「次へ」をクリックします。

「管理対象アカウントへの移行依頼メールを送信する」とメッセージが出るので、「送信する」をクリックします。

「管理対象アカウントに移行しよう」というメールが各アカウントに届きます。この時点ではまだそのままCacooは使えます。

「アカウントを移行する」をクリックします。

「移行を開始する」をクリックします。
この時点でCacooへ既存のパスワードログインができなくなります。

「アカウント移行が完了しました」というメールが各アカウントへ届きます。

管理画面でも「管理対象アカウント」と表示されます。

あとはOneLoginの設定でアプリケーション表示設定をすれば、シングルサインオンができます。

ログイン後の画面です。
注意点
他社の組織へもログインする場合
Nulab Pass 導入後に変化するのは、導入した組織のみとなります。他社が契約しているヌーラボサービスにログインする場合は、そちらの管理に従います。つまり既存のヌーラボアカウントでログインします。ヌーラボアカウントでは自社組織にログインできなくなりますが、他社組織へはヌーラボアカウントでログインする必要があります。ここまでアカウントの移行と言ってきましたが、実は既存のヌーラボアカウントも残っているということです。
また、1つのブラウザでヌーラボアカウントと管理対象アカウントに同時にログイン状態にはできません。もし、同時にしたい場合は、ブラウザのシークレットモードを使うか、ブラウザを分けたりする必要があります。

Nulab Pass ライセンスの数え方
Nulab Pass は組織に登録したアカウントの数だけライセンスが必要です。Nulab Pass を導入した組織でも全アカウントを管理対象アカウントにする必要はなく、ヌーラボアカウントのままでいることができますが、ライセンスは両者を合わせた数が必要です。
参考資料
渡辺 信秀(記事一覧)
2017年入社 / 地味な内容を丁寧に書きたい