Más contenido relacionado La actualidad más candente (20) Similar a 祝!公式サポート Auth0 + LINE Login (20) Más de Naohiro Fujie (20) 祝!公式サポート Auth0 + LINE Login2. 自己紹介
• 役割
• OpenIDファウンデーション・ジャパン理事、KYC WGリーダー
• IDをコアとしたビジネス開発担当。大阪から全国をカバー
• 書き物など
• Blog:IdM実験室(https://idmlab.eidentity.jp)
• 監訳 : クラウド時代の認証基盤 Azure Active Directory 完全解説
• 共著 : クラウド環境におけるアイデンティティ管理ガイドライン
• その他活動
• 日本ネットワークセキュリティ協会アイデンティティ管理WG
• Microsoft MVP for Enterprise Mobility(Jan 2010 -)
• LINE API Expert (Feb 2018 -)
• Auth0 Ambassador(Sep 2018 -)
Copyright Naohiro Fujie, 2019 2
4. 4
CIAM(顧客ID管理)とSNS
顧客の
段階
認知 検討 顧客化 維持 支持
匿名 既知
必要な
機能
匿名での操作 簡易なID登録 全属性の登録 属性鮮度維持 他サービス連携
ユーザ同意の取得・管理
プロファイル管理
認証・認可
実装例
SNSでの
ID登録
追加属性登録
顧客DB連携(CRM連携)
身元確認プロセスの統合
他サービスへの
ID連携
コミュニケーション
個別認証、SNS認証連携、多要素認証、リスク判定
顧客化
全属性の登録
認証・認可
顧客DB連携(CRM連携)
身元確認プロセスの統合
個別認証、多要素認証、リスク判定
離脱防止に
SNSでコンテ
ンツ提供
顧客化のための
初期登録の簡素化
5. LINEの存在感
• MAU:8100万
• DAU:6966万(DAU/MAU:86%)
• 利用用途:コミュニケーション
Copyright Naohiro Fujie, 2019 5
LINE社決算発表資料(2019年12月期)より
本名だけど見られたくない?~大学生のSNS 利用と名乗り, 情報処理学会研究報告, 2015(折田明子)を基に作成
• 調査対象 :四年制私立大学生
• 有効回答者数 :99 回答者内訳 :男性 63(63.6%)、女性 36(36.4%)
6. 頑張って実装してきた
• LINEを使いたい、という要望は
多かったが・・・
• 独自実装(生OpenID Connect)
• https://www.slideshare.net/naohi
ro.fujie/line-loginopenid-connect
• Auth0+Extension
• https://idmlab.eidentity.jp/2019/0
1/auth0line.html
• OpenID Connect Enterprise
Connection
• 色々あって(多くは語らず)
Copyright Naohiro Fujie, 2019 6
8. 8
Auth0+LINEの例
顧客の
段階
認知 検討 顧客化 維持 支持
匿名 既知
必要な
機能
匿名での操作 簡易なID登録 全属性の登録 属性鮮度維持 他サービス連携
ユーザ同意の取得・管理
プロファイル管理
認証・認可
実装例
LINEでの
ID登録
追加属性登録
顧客DB連携(CRM連携)
身元確認プロセスの統合
他サービスへの
ID連携
コミュニケーション
個別認証、LINE Login連携、多要素認証、リスク判定
LINE Messaging
APIでメッセージ
配信
LINE Loginで
アカウント登録
Auth0が提供する
ID基盤
9. LINEを使ったユーザーシナリオとAuth0
Copyright Naohiro Fujie, 2019 9
アカウント登録
友達状態の取得
公式アカウントへ友達登録
アプリケーションへログイン
メッセージ配信
ユーザーシナリオ
LINE Login
/w Profile API
LINE Login
/w bot_prompt
Social API
LINE Login/SDK等
(OpenID Connect)
Messaging API
素のLINE API Auth0+LINE Login
Social Connections/LINE
Rules
Applications/SDK等
(OpenID Connect/SAML等)
11. 素のLINE APIを使うための設定
• アプリケーション側の設定
• 各種LINE APIエンドポイントの指定
• AuthZ:https://access.line.me/oauth2/v2.1/authorize
• Token:https://api.line.me/oauth2/v2.1/token
• UserInfo:https://api.line.me/v2/profile
• Social:https://api.line.me/friendship/v1/status
• Message(Push):https://api.line.me/v2/bot/message/push
• channel_id, channel_secretの設定(LINE側で取得)
• スコープの指定(openid profile email)
• LINE側の設定
• redirect_uriを設定(アプリのCallback URL)
• メールアドレス取得スコープの有効化(オプション)
• 連携するBot設定(オプション)
Copyright Naohiro Fujie, 2019 11
13. Auth0を使う
• Auth0側の設定
• LINE連携の有効化、設定
• Connections->SocialよりLINEをON
• channel_id, channel_secretの設定(LINE側で取得)
• スコープの指定(Basic、Email)
• 友達状態を取得するための追加Ruleの作成
• LINE側の設定
• redirect_uriを設定
• https://{tenant}.auth0.com/login/callback
• メールアドレス取得スコープの有効化(オプション)
• 連携するBot設定(オプション)⇒Auth0だとbot連携出来ないので不要
Copyright Naohiro Fujie, 2019 13
16. Copyright Naohiro Fujie, 2019 16
function (user, context, callback) {
if (context.connection !== 'line') {
return callback(null, user, context);
}
const request = require('request');
const lineIdentity = _.find(user.identities, { connection: 'line' });
const options = {
url: 'https://api.line.me/friendship/v1/status',
headers: {
Authorization: 'Bearer ' + lineIdentity.access_token
},
json: true
};
request(options, function (error, response, body) {
if (error) return callback(error);
if (response.statusCode !== 200) return callback(new Error(body));
context.idToken['http://example.jp/lineFriendStatus'] = body.friendFlag.toString();
return callback(null, user, context);
});
}
Social APIのエンドポイント
LINE Loginで取得した
アクセストークン
Social APIから取得した
friendFlagをid_token内の
Claimとして追加
19. 最大の要望 ⇒ Bot連携への対応
Copyright Naohiro Fujie, 2019 19
アカウント登録
友達状態の取得
公式アカウントへ友達登録
アプリケーションへログイン
メッセージ配信
ユーザーシナリオ
LINE Login
/w Profile API
LINE Login
/w bot_prompt
Social API
LINE Login/SDK等
(OpenID Connect)
Messaging API
素のLINE API Auth0+LINE Login
Social Connections/LINE
Rules
Applications/SDK等
(OpenID Connect/SAML等)
bot_prompt対応が欲しい!
bot_prompt対応すれば
Messaging APIへ誘導できる!
20. Bot連携(bot_prompt)の仕様
• 認可要求時のクエリパラメータにbot_promptをつけるだけ
• 設定値
• normal : 通常の同意画面の中にBot連携スコープが出てくる
• デフォルトはOFF⇒絶対ONにしてくれないと思う・・・
• agressive:通常の同意画面の後に友達登録の確認画面が出る
• こちらの方が友達になってくれる可能性は高い
• https://access.line.me/oauth2/v2.1/authorize?response_type=code
&client_id={CHANNEL_ID}&redirect_uri={CALLBACK_URL}&state=
{STATE}&bot_prompt={BOT_PROMPT}&scope={SCOPE_LIST}
• リファレンス
• https://developers.line.biz/en/docs/line-login/web/link-a-bot/
Copyright Naohiro Fujie, 2019 20