[レポート] LINE Loginで始めるAuth0の使い方 – 認証基盤をかんたんに構築する方法 #linedevday_report #Auth0JP

LINE Loginで始めるAuth0の使い方 - 認証基盤をかんたんに構築する方法

2019年11月20日(水)・21日(木)にグランドニッコー東京 台場でLINEのデベロッパーカンファレンス「LINE DEVELOPER DAY 2019」が開催されました。

本記事は、私がスピーカーとして登壇したセッション「LINE Loginで始めるAuth0の使い方 - 認証基盤をかんたんに構築する方法」をレポートします。

スピーカー

  • 諏訪 悠紀 [クラスメソッド株式会社 CX事業本部 スペシャリスト Auth0 Ambassador]

セッション概要

今やネイティブアプリやWebアプリにとって「認証・認可」は必要不可欠な機能となっています。しかしながら、実装する上では前提となる専門知識が必要となり、セキュリティ面が考慮された認証・認可フローも複雑なため、完全に理解した上での実装はコストは多くかかります。一方で、ログインのユーザーエクスペリエンスが良くないと顧客満足度は高くなりません。認証・認可は実装ハードルが非常に高い分野となっています。 「Auth0」は、そのような実装コストがかかりがちな「認証・認可基盤」を、簡単な手順で設定・構築できることが特長の認証・認可プラットフォームです。また、LINEログインを使うことでLINEのユーザーがシームレスにログインできるようになります。

Auth0は2019年8月にLINEログインを公式にサポートしました。本セッションでは、Auth0とLINEログインを組み合わせて、ネイティブアプリやWebアプリにどのように導入するのか、そしてどのような効果があるのか実際の導入事例を通して解説します。

スライド

レポート

LINE Loginの概要

LINE LoginはLINEのユーザー基盤を利用し、ログインに活用できるサービスです。いわゆる「LINEでログイン」をアプリやWebサイトに組み込むことができます。

Web、iOS、Android、Unity、Flutterに対応しており、一般的な規格であるOpenID ConnectOAuth 2.0に準拠しています。

LINE Loginを使うモチベーション

Webアプリやネイティブアプリにおいて「ログイン」はユーザーがアプリを使い始めるはじめの一歩です。しかしながら「ログイン手順が分かりづらい」「ログインで詰まる」といった、ユーザービリティ的な問題を抱えがちです。はじめの一歩で躓くわけですので、これは ユーザーエクスペリエンス(UX)や顧客体験(CX)としては非常に重要な問題 と言えます。

LINE Loginを使うということは、つまり 多くのユーザーがログイン状態であろうユーザー基盤を利用する ということです。実際、LINEはMAUが8,200万人、DAUが7,052万人という数字が出ています(2019年10月に公開された「2019年12月期 第3四半期決算説明会 プレゼンテーション資料」参照。)。国内人口の約56%が毎日LINEを利用している計算になります。

LINE Loginを使うと、ユーザーにログインを意識することなく、ログインしてもらうことができます。早期段階でログイン状態にすることは顧客体験的にも、データ分析上もメリットが多いです。国内向けのサービスやアプリでは活用すべきところです。

LINE Loginの最新情報

LIFF SDK v2

LIFF (LINE Frontend Framework) は、LINEの中で立ち上がるWebページ内でLINEの様々なサービスと連携させるために必要なフレームワーク(SDK)です。

LIFF SDKがv2となり、そのアップデートによってLINE Loginとの親和性が向上しました。

SDKにAPIが追加され login()logout() を使ってログインできるほか、 isLoggedIn() でログイン判定もできるようになりました。

LIFF SDK V2でLIFFを外部ブラウザでも利用できるようにする #LINE_API

LIFFのScope指定

LIFFは以前はMessaging APIの拡張機能という位置付けだったのに対し、この度より他の用途でも活用できるように Scope が導入されました。これによってユーザーの認可をまとめて行えるようになりました。

これの重要性について解説します。まずユーザーがLIFFを初めて使う場合は、ユーザーに認可を求める必要があります。LINE Loginはそれはそれでユーザーへの認可が必要なので、普通にLIFFとLINE Loginを組み合わせるとユーザーに2回認可を求めなければいけません。

今回のScope指定を使うと、LIFF起動時にLINE Loginに必要な認可も同時に求めることができます。

併用する場合は必ず設定しましょう。

LIFF(LINE Front-end Framework)のScopeにLINE Loginが追加できるようになりました #LINE

Auth0の概要

ソーシャルログインの課題

LINE Loginは多くのユーザーにシームレスなログインを提供できますが、もちろんLINEを使っていない、LINEを使いたくないユーザーに対してのフォローアップも必要です。つまりはLINE上で立ち上がる前提ではないWebアプリ、およびネイティブアプリでは、他のIDプロバイダも併用して使うことが必要になってきます。

しかしながら、全てのIDプロバイダがOpenID ConnectおよびOAuth 2.0に準拠しているわけではありません。一部準拠していたり、独自の仕様だったりします。その実装をクライアント/サーバーで対応することは非常に煩雑で大変です。

そのような課題をAuth0がまるっと解決します。Auth0は一言で言うと 認証の仲介役 です。数多くのIDプロバイダの実装を吸収し、実際に使用するクライアント/サーバーに標準的な仕様で提供します。また、IDプロバイダのバージョンアップに伴う仕様変更なども順次対応されるので、運用面での心配事をガッツリ減らすことができます。

Auth0が特に重要視しているのが Developer Friendly であることです。94%の顧客が1ヶ月以内に実装を完了しているという実績から、デベロッパーにとっていかに簡単に扱えるかが見てとれます。またAuth0を使うということは ID管理のプロにID管理をお任せする といえます。Auth0は最新技術、ID管理やセキュリティのトレンドをいち早くプロダクトに落とし込んでくれるので、使い手としてはよりコアな機能開発に集中できるようになるというわけです。

Auth0の最新情報

Auth0では2019年8月にLINE Loginに対応しました。こちらは使い方を詳細にまとめた記事がありますので、ぜひ参考にしてください。

認証サービス「Auth0」がLINE Loginを正式サポート!設定手順を詳細に解説します! #Auth0JP

Auth0とLINEを組み合わせる目的

LINE Loginだけを組み込みたい場合はAuth0を使う必要は無さそうに思えますが、その理由としては以下のような点が挙げられます。

Sign In with Appleを導入する必要がある場合

現在ではネイティブアプリでソーシャルログインを組み込む場合、Sign In with Appleの導入が必須になっています。つまりネイティブアプリでLINE Loginを導入する場合、Sign In with Appleにも対応しなければいけないということです。

他のログイン手段の方が適切な場合

例えばPCのブラウザの場合、LINEでログインしているユーザーはあまり多くないのが現状かと思います。そのような環境下ではLINE Loginでシームレスなログイン体験が作れるとは限りません。例えばChromeでは、Googleアカウントでログインできた方が便利な場合があります。

LINE Login以外のログイン手段を提供したい場合にAuth0が活きてきます。

デモ - 複数のクライアントでの認証の出し分け

セッションではデモを披露させていただきました。

デモの内容は「Web/ネイティブ/LIFFのそれぞれのアプリで、ログイン手段を変える」といったものです。アーキテクチャは下図のようになっています。

事例 - Developers.IO CAFE

Auth0とLINE Loginを組み合わせた事例として、弊社が運営するカフェ「Developers.IO CAFE」をご紹介しました。

Developers.IO CAFEでは完全キャッシュレスでのモバイルオーダー、ウォークスルーストアを提供しています。その利用にはWeb/ネイティブ/LIFFのいずれかを利用する必要があり、そのログイン機能にAuth0とLINE Loginを活用しています。

Developers.IO CAFEでは、以下のような感じで切り分けています。

  • Webまたはネイティブ : SMS認証
  • LIFF : LINE Login

TIPS

実際に使ってみたところのTIPSをご紹介します。

LINEの認可を1回で済ませたい

前述している通り、アプリ利用する場合のLINEの認可は可能な限り1回で済ませたいものです。

LIFFのScope指定をするとLINE Loginの認可を個別に取らなくても良くなりますが、Auth0に登録しているChannelが異なるとそれはそれで認可が必要になってしまいます。LIFFを登録しているChannelのChannel IDとChannel SecretをAuth0でも使うようにすると、Auth0のログインフロー内においてもLINE Loginの認可をスキップすることができます。

bot_promptを追加したい

Webアプリでログインする際に 同時に友だち追加も認可してもらいたい というユースケースがあるとします。

LINE LoginではAuthorization Requestに bot_prompt パラメータを付与することで認可に加えることが可能という仕様ですが、Auth0がAuthorization Request処理を吸収するので、Auth0側を少しカスタマイズする必要があります。

Auth0ではManagement API (管理目的のAPI) としてUpdate Connection APIがありますので、こちらを利用してLINE Connectionに upstream_params を設定すると、Authorization Requestに任意のパラメータを付与することができます。

$ curl -XPATCH -H "Authorization: Bearer $TOKEN" -d
{"options":{
  "client_id":"xxx",
  "client_secret":"xxx",
  "upstream_params":{
    "bot_prompt":{ "value":"Normal"}
  }
}}
"https://{tenant}.auth0.com/api/v2/connections/{con_id}"

このようにすることで、Authorization Requestは以下のようになります。

https://access.line.me/oauth2/v2.1/authorize
  ?client_id=YOUR_CLIENT_ID
  &response_type=code
  &redirect_uri=https://YOUR_APP/callback
  &scope=openid
  &bot_prompt=Normal

まとめ

はじめてのAuth0とLINE Loginと題して、それぞれのサービスの概要と使う目的についてまとめつつ、実際に組み込む際のTIPSもあわせてご紹介しました。Auth0もLINE LoginもDeveloper Friendlyに仕上がっていますので、まずは試して使いやすさを実感いただければと思います。

また、LINE Developer Dayでは今回が初めての登壇でした。あまり慣れない感じで緊張しましたが(登場時の演出、ヘッドセットマイクを付けて喋るなどなど)、Auth0に多くの方に興味を持っていただけたようで嬉しい限りです。LINEさん、登壇の機会をいただきありがとうございました!

これからも色々な場で広めていきたいと思います。