FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

ソーシャル認証を使う際にauthDataを非公開にしましょう

f:id:mbaasdevrel:20201023143007p:plain

ソーシャル認証を使えば、Twitter/Facebook/Google/Appleなどをサービスプロバイダーとして、OAuth認証が可能です。これを使えばパスワードを管理することなく、ユーザにとってもスムーズで利用しやすい認証機能が提供できます。

このソーシャル認証に関するデータは会員管理の authData フィールドに入っています。この記事では、それを非公開にするメリット/デメリットについて解説します。

デフォルトは公開

authDataはデフォルトでは公開になっています。管理画面であれば、次のように表示されています。

f:id:mbaasdevrel:20201023142937p:plain

ここで、任意のユーザデータを全体読み込み可能にして、外部から取得してみます。結果は次のようなJSONになります。

User {
  authData: {
    google: {
      id: '117...676',
      displayName: 'Atsushi Nakatsugawa',
      access_token: 'ya29.a...IrM'
    }
  },
  objectId: 'duQSOhEj18hBxPbF',
  userName: 'RRsRCVLN7M',
  mailAddress: null,
  mailAddressConfirm: false,
  createDate: '2020-10-22T07:47:39.795Z',
  updateDate: '2020-10-23T05:10:11.666Z',
  acl: Acl {
    duQSOhEj18hBxPbF: { read: true, write: true },
    '*': { read: true }
  }
}

非公開にする設定方法

ではアプリ設定に移動して、SNS連携の一番下にある 会員管理 SNS認証データSNS認証データ を含めないに指定しましょう。

f:id:mbaasdevrel:20201023143007p:plain

同様にデータを取得すると、次のようにauthDataが返ってこないデータになります。

User {
  objectId: 'duQSOhEj18hBxPbF',
  userName: 'RRsRCVLN7M',
  mailAddress: null,
  mailAddressConfirm: false,
  createDate: '2020-10-22T07:47:39.795Z',
  updateDate: '2020-10-23T05:10:11.666Z',
  acl: Acl {
    duQSOhEj18hBxPbF: { read: true, write: true },
    '*': { read: true }
  }
}

設定をすると、管理画面上でもauthDataが見られなくなります。

f:id:mbaasdevrel:20201023143040p:plain

メリット

一番大きなメリットはauthDataに含まれるトークンが非公開になるということです。トークンを使うと、そのソーシャルサービス上でデータをポストしたり、逆に削除することもできます(OAuthプロバイダーの設定によります)。不正な操作を防止するためにもauthDataは非公開にすべきです。

デメリット

逆にアプリ側でトークンを利用したい場合に、使えなくなるというデメリットがあります。ソーシャルサービスと連携したアプリの場合、トークンの利用は欠かせないでしょう。

お勧め

会員データを全体に対して読み込み可能とする場合(フォロー/フォロワーや、会員一覧画面、会員プロフィール画面などを作る場合)は、authDataは非公開にしましょう。万一漏洩することがあれば、不正な操作につながる可能性があります。

そしてトークンを利用する場合には、別なクラス(Tokenクラスなど)を作成して、そこにユーザデータと紐付けた形で保存しましょう。そのデータはもちろんユーザ自身のみ読み込み、書き込み可能とします。

まとめ

authDataにはソーシャル認証や匿名認証で使われる大事なデータが保存されています。不用意に公開することがないよう、取得自体できないようにするのが安全です。ぜひご検討ください。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。