別サービスアカウントを利用した認証

Kii Cloud では Facebook、Twitter、d アカウント等のアカウントと連携してユーザーを認証する機能を持っています。

Facebook、Twitter、ドコモクラウド API 等では、外部アプリケーションとの連携機能を提供しており、Kii Cloud ではそれらを利用できます。エンドユーザーは Kii Cloud に作られるユーザーのユーザー名とパスワードを覚える代わりに、これらのサービスで使用しているユーザー名とパスワードを使ってログインすることができます。ログインが成功すると、それらの外部サービスのアカウントに紐付いた Kii User がログインした状態となります。

ここでは Kii Cloud から見た Facebook、Twitter、ドコモクラウド API 等を外部サービスと呼びます。

サポートする外部サービス

Kii Cloud の各 SDK と REST API で対応している外部サービスは以下のとおりです。

プラットフォーム別の対応状況は以下のとおりです。

Android iOS JavaScript REST
Facebook
Twitter
Google
新浪微博
QQ
d アカウント

サーバー設置場所として「中国」を選択した場合、次のサービスとの連携はできません:Facebook、Twitter、Google

d アカウントと連携するには Kii PhotoColle SDK が必要です。

サポートする機能

Kii Cloud での連携機能では、各外部サービスとも、以下 2 つの機能をサポートしています。

  • ユーザー作成とログイン

    これは、外部サービスのアカウント情報を使って、Kii Cloud にログインする機能です。

    外部サービスのユーザー名とパスワードを使って認証後、その認証結果を使って Kii Cloud にログインすると、Kii Cloud 上に新しい KiiUser が作成されます。次回以降、外部サービスの同じアカウント情報を使ってログインすると、作成した KiiUser にログインしたことになります。

  • 既存ユーザーとのリンク

    これは、ログイン中の KiiUser に、外部サービスのアカウント情報を追加して紐付ける機能です。元のログイン方法に加え、外部サービスのアカウント情報を使ってログインする方法が追加されます。紐付けたリンクを解除する機能も用意しています。

    この機能は、リンク先の KiiUser がログイン中の状態で実行します。外部サービスのユーザー名とパスワードを使って認証後、その認証結果を使って Kii Cloud の API でリンクを行うと、ログイン中の KiiUser に Facebook アカウントや Twitter アカウントが紐付きます。次回以降、同じ外部サービスのアカウント情報を使ってログインすると、リンクした KiiUser にログインしたことになります。

    リンク 機能を使うと、1 つの KiiUser に複数の外部サービスアカウントを紐付けることも可能です。この場合、紐付けられたアカウントのうち、いずれかで認証することで、同じ KiiUser にログインできます。

    リンクの際は、外部サービスで使用するメールアドレスと、KiiUser のメールアドレスは同じである必要がありません。ただし、Facebook を使用する場合に限り、メールアドレスによるリンクが行われるため、下記の Facebook アカウントのリンク機能 に示す点に注意してください。

外部サービスのアカウントを入力する際、モバイルアプリではユーザーに外部サービスのユーザー名とパスワードを入力させる必要があります。多くの場合、外部サービスの SDK はログイン画面を表示する API を提供しているため、以下のように連携先サービスのデザインに沿ったログイン画面をモバイルアプリに組み込むことができます。

Facebook アカウントのリンク機能

ネイティブアプリケーションによる認証で Facebook を使う場合に限り、ユーザーの新規作成時にメールアドレスによる紐付けが行われます。この際、下記に示すようなセキュリティに関する注意点があります。

Facebook のユーザーを指定してログインしたとき、ログインに使用したものと同じメールアドレスを持った既存の KiiUser を検索します。同じメールアドレスの KiiUser が見つかった場合は、その KiiUser としてログインします。見つからなかった場合は、新規に KiiUser を作成します。これ以降は、この Facebook のアカウントで、対応する KiiUser としてログインできます。

具体例を示します。たとえば、KiiUser を メールアドレス:user1@kii.com、パスワード:kiipw で作成済みとします。Facebook も user1@kii.com で使用しているとき、外部サービスによるログインを行うと、メールアドレスによって、既存の KiiUser user1@kii.com に紐付いてログインできます。次回以降は、Facebook のログインでも、ユーザー名:user1@kii.com とパスワード:kiipw でも、同じユーザーとしてログインできます。

なお、この例とは逆に、Facebook アカウントでログインしたあとは、その Facebook アカウントと同じメールアドレスを指定して新規 KiiUser を登録することはできなくなります。

メールアドレスによるユーザー登録 と、Facebook アカウントでの認証を併用する場合、上記のような紐付けが行われるため、メールアドレス認証 は必ずオンにした状態で使用してください。認証がオフだと、他人のメールアドレスを使用してユーザーを登録できるため、ユーザー登録に使用されたメールアドレスの持ち主が Facebook アカウントでログインすると、これらは同じ KiiUser を共有することになります。

外部サービスの利用手順

外部サービスとの連携を行うには、外部サービスからアクセストークンを取得し、それを Kii Cloud の API に指定する必要があります。この流れは、d アカウントを除く、すべてのプラットフォームで共通です。

なお、過去に提要されていた、Kii Cloud SDK がログイン画面を表示する方式は、現在サポートしていません。

外部サービスを使ったログインを行うまでの手順の概要は以下のとおりです。

  1. 外部サービスでのアプリケーションの登録

    外部サービスに開発者として登録し、Kii Cloud と連携するためのアプリケーションを登録します。d アカウントの場合は、開発者サイトで API 利用申請を行います。

    登録が完了すると、連携先サービス(Kii Cloud 等)へのアクセスキーが発行されます。

  2. アクセスキーの登録

    外部サービスで発行されたアクセスキーを Kii Cloud の開発者ポータルに登録します。

  3. ログイン処理の作り込み

    多くの場合、外部サービスのアクセストークンを取得するには、外部サービスから提供される SDK をモバイルアプリに組み込む必要があります。組み込み方法や、外部サービスへのアクセストークンの取得方法は各サービスが提供する SDK のマニュアルをご覧ください。

処理の流れ

モバイルアプリは、通常、以下のような流れとなるように実装します。

  1. 外部サービスの SDK の API を呼び出して、ログイン画面を表示します。
  2. ユーザーは、ログイン画面に外部サービスのユーザー名やパスワードを入力します。入力結果の正当性は外部サービスで検証されます。
  3. 正しく認証できた場合、モバイルアプリは、外部サービスが発行したアクセストークンを取得できます。
  4. モバイルアプリは、Kii Cloud SDK の API(または REST API)に外部サービスのアクセストークンを指定して連携します。

このシーケンス図は、外部サービスの SDK が認証用の入力画面を提供し、かつ、OAuth の Consumer に相当するサーバーを使用しない場合の例です。外部サービスによってはアクセストークンの取得方法が異なる場合があります。

REST API を使用する場合、図の "クライアント SDK" のモジュールも、作成するモバイルアプリの実装の一部として作り込む必要があります。

Kii Cloud の アクセストークン と、外部サービスのアクセストークンは異なる点にご注意ください。上記の説明では、Kii Cloud によって KiiUser が認証された状態を表すアクセストークンを「アクセストークン」、外部サービスによって、外部サービスのユーザー(Facebook ユーザーなど)が認証されたトークンを「外部サービスのアクセストークン」「Facebook のアクセストークン」のように表現して区別しています。