Se ha denunciado esta presentación.
Se está descargando tu SlideShare. ×

ざっくり解説 LINE ログイン

Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio

Eche un vistazo a continuación

1 de 34 Anuncio

Más Contenido Relacionado

Presentaciones para usted (20)

Similares a ざっくり解説 LINE ログイン (20)

Anuncio

Más de Naohiro Fujie (20)

Más reciente (20)

Anuncio

ざっくり解説 LINE ログイン

  1. 1. ハッシュタグ #LINEDC
  2. 2. LINE Developer Communityとは? • LINE Platformでものづくりするエンジニア・クリエイターによ るLINE社外の人が集まるコミュニティです。 • 要はLINEで面白いものを作ったり、エンジニア同士の情報交 換・コラボを促進しようというコミュニティ
  3. 3. Follow me! メンバー数4000名以上! 勉強会イベント情報 全コンテンツ無料。 ぜひ登録お願いします! https://linedevelopercommunity.connpass.com/
  4. 4. チャンネル登録お願いします🙇 本日のアーカイブ/最新情報や事例の紹介 勉強会動画を分かりやすく編集してアップ / LINE DC などなど 登録者増 = Flutter大学さんとのさらなるコラボレーショ ンが可能になり、より多くのコンテンツをお届けできる ようになります! 概要欄にURL貼っていただきました!
  5. 5. コンテンツ紹介 今後もYoutubeチャンネルで、LINE開発者必見情報を続々発信! LINE Platformの 最新アップデートを 定期的にお届け モバイル以外のLINEログイン勘 所を話している動画もあります
  6. 6. #linedc ざっくり解説 LINE ログイン 2021/09/08 Naohiro Fujie @phr_eidentity
  7. 7. #linedc ⾃⼰紹介 • 役割 • OpenIDファウンデーション・ジャパン代表理事、KYC WGリーダー • ⽶国OpenID Foundation eKYC and Identity Assurance WG, co-chair • 書き物など • 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, 2021 7
  8. 8. #linedc コンテンツ • LINE ログインとは? • OpenID Connect って何? • ”OAuth 認証“って⾔われるものと違うの? • セキュアに使うには? • LINE ログインならではの便利機能 Copyright Naohiro Fujie, 2021 8
  9. 9. #linedc LINE ログインとは? 公式ドキュメントより • もっと簡単に LINE につながる • 利便性を上げてコンバージョンレートを向上 • 圧倒的なユーザーベース • 2億⼈以上が登録、70%のアクティブ率 • 簡単なアカウント作成 • LINE アカウントを使ってタップ1つでアカウント作成 • パーソナライゼーション • 表⽰名、プロフィール画像等へアクセス、魅⼒的なユーザ体験を提供 ※出典)https://developers.line.biz/ja/services/line-login/ Copyright Naohiro Fujie, 2021 9
  10. 10. #linedc アプリケーションへの組み込み⽅ • Webアプリ • 認証・認可のプロセスは OAuth2.0 と OpenID Connect プロトコルに 基づく • ネイティブアプリ • iOS、Android、Unity • LINE SDK を利⽤ • LINE SDK for iOS Swift • LINE SDK for iOS Objective-C • LINE SDK for Android • LINE SDK for Unity • LINE SDK for Flutter Copyright Naohiro Fujie, 2021 10
  11. 11. #linedc LINE ログインの機能 • 認証 • ⾃動ログイン:LINE アプリで⾃動的にログイン • メールアドレスログイン:メールアドレスとパスワードでログイン • QR コードログイン:QR コードを LINE アプリで読み込みログイン • シングルサインオン(SSO)によるログイン:過去のログイン状態を保持 • ユーザの識別、プロフィールの取得 • 表⽰名、ユーザID、プロフィール画像のURL、ステータスメッセージ取得 • 申請によりメールアドレス、Profile+の詳細情報も取得可能 Copyright Naohiro Fujie, 2021 11
  12. 12. #linedc LINE ログインの裏側を知る • LINE ログインの認証・認可のプロセスは OAuth2.0 と OpenID Connect プロトコルに基づく • 認可フレームワークである OAuth2.0 (RFC6749)の上にシン プルなアイデンティティレイヤを付与したものが OpenID Connect(OpenID Foundation にて仕様策定) • 関連仕様(⽇本語訳): https://www.openid.or.jp/document/ Copyright Naohiro Fujie, 2021 12
  13. 13. #linedc LINE ログインが対応している関連仕様 • JWx • RFC 7519 : JWT(JSON Web Token) • RFC 7515 : JWS(JSON Web Signature) • RFC 7517 : JWK(JSON Web Key) • OAuth2.0 • RFC 6749 : The OAuth2.0 Authorization Framework • RFC 6750 : The OAuth2.0 Authorization Framework Bearer Token Usage • RFC 7636 : PKCE(Proof Key for Code Exchange) • OpenID Connect • OpenID Connect Core 1.0 • OpenID Connect Discovery 1.0 Copyright Naohiro Fujie, 2021 13
  14. 14. #linedc OpenID Connectとは • OpenID Connect 1.0 は, OAuth 2.0 プロトコルの上にシンプルなア イデンティティレイヤーを付与したものである. このプロトコルは Client が Authorization Server の認証結果に基づいて End-User の アイデンティティを検証可能にする. また同時に End-User の必要最 低限のプロフィール情報を, 相互運⽤可能かつ RESTful な形で取得 することも可能にする. • OpenID Connect Core 1.0 ⽇本語訳 • http://openid-foundation-japan.github.io/openid-connect-core-1_0.ja.html • OpenIDファウンデーション・ジャパン翻訳・教育WG Copyright Naohiro Fujie, 2021 14
  15. 15. #linedc OAuth2.0とは • OAuth 2.0 は, サードパーティーアプリケーションによるHTTP サービスへの限定的なアクセスを可能にする認可フレームワー クである. • RFC 6749: The OAuth 2.0 Authorization Framework ⽇本語訳 • http://openid-foundation-japan.github.io/rfc6749.ja.html • OpenIDファウンデーション・ジャパン翻訳・教育WG Copyright Naohiro Fujie, 2021 15
  16. 16. #linedc • サードパーティアプリケーション:OAuthクライアント • HTTPサービス:リソースサーバ • 限定的なアクセス:スコープ • 可能にする(サービス):認可サーバ Copyright Naohiro Fujie, 2021 16 OAuthクライアント (Webアプリ、スマホアプリなど) リソースサーバ (API、サービス) 認可サーバ (OAuthサーバ) 利⽤者 (リソースオーナー) スコープに基づき許可 (認可) 認可に基づき アクセストークンを発⾏ アクセストークンを 提⽰してアクセス リソースを所有
  17. 17. #linedc 典型的な使われ⽅ • カレンダーアプリとGoogle Calendarの連携 Copyright Naohiro Fujie, 2021 17 カレンダーアプリ Google Calendar API Google Account 利⽤者 (リソースオーナー) カレンダーアプリに対して アイテムの読み出しを許可 認可に基づき アクセストークンを発⾏ アクセストークンを 提⽰してアクセス リソースを所有
  18. 18. #linedc 認証/ID連携(OAuth認証)の誤⽤理由① • アクセス許可を⾏う前にログインする為、アクセストークンを 認証の結果得られたものとして扱ってしまう Copyright Naohiro Fujie, 2021 18 カレンダーアプリ Google Calendar API Google Account 利⽤者 (リソースオーナー) カレンダーアプリに対して アイテムの読み出しを許可 認可に基づき アクセストークンを発⾏ アクセストークンを 提⽰してアクセス リソースを所有 ログイン(認証)
  19. 19. #linedc 認証/ID連携(OAuth認証)の誤⽤理由② • 殆どのサービスがプロファイル取得APIを⽤意しており、アク セストークンでID情報の取得が可能。アクセストークンの持ち 主=リソースオーナーとみなしてしまう Copyright Naohiro Fujie, 2021 19 カレンダーアプリ Google Account API Google Account 利⽤者 (リソースオーナー) カレンダーアプリに対して アイテムの読み出しを許可 認可に基づき アクセストークンを発⾏ アクセストークンを 提⽰してアクセス リソースを所有 ID情報の取得が可能
  20. 20. #linedc よく考えると • アクセストークンは無記名式の切符(誰が持ってきてもOK) • 認可サーバはアクセストークンの有効性検証は出来るが、持参⼈=発⾏者かどうかは検証できない • 何故なら、 • 基本的にアクセストークンは単なる⽂字列(ハンドルトークン) • ※最近はJWT形式のAssertion Tokenもありますがややこしくなるので割愛 • 認可サーバには以下のように保存されている(イメージ) • Authorization HeaderにBearer xxxx(トークン)って書きますよね? • Bearer(ベアラ)=持参⼈。持ってきた⼈に利⽤を許可する、ということ • 参考)https://idmlab.eidentity.jp/2013/09/bearer-token.html Copyright Naohiro Fujie, 2021 20 アクセストークン 発⾏者 有効期限 スコープ nQ6wtY3K#UCWRtE6 Yamada Taro 2019-03-15 18:30:00 Email Profie xU,RRjaa.iZLnNgJ Tanaka Hanako 2019-03-15 19:00:00 Calendar.Read
  21. 21. #linedc OAuth2.0とは • OAuth 2.0 は, サードパーティーアプリケーションによるHTTP サービスへの限定的なアクセスを可能にする認可フレームワー クである. • RFC 6749: The OAuth 2.0 Authorization Framework ⽇本語訳 • http://openid-foundation-japan.github.io/rfc6749.ja.html • OpenIDファウンデーション・ジャパン翻訳・教育WG Copyright Naohiro Fujie, 2021 21 認証/ID連携は仕様のスコープ外
  22. 22. #linedc 認証/ID連携に使うには? • OAuthクライアントがリソースサーバ側のユーザ情報を取得できること • 認証された結果を把握できること • リソースオーナーのID情報を把握できること • OpenID Connectにおける実現⽅法=アイデンティティレイヤー • ID Token : 認証結果(アサーション)の取得⽅法の標準化 • UserInfoエンドポイント : ID情報の取得⽅法の標準化 ※ID TokenにもID情報を含められるがトークンのサイズの巨⼤化の問題や認証時以外の情報取得に対応す るためUserInfoを使⽤ Copyright Naohiro Fujie, 2021 22
  23. 23. #linedc OpenID Connectとは • OpenID Connect 1.0 は, OAuth 2.0 プロトコルの上にシンプル なアイデンティティレイヤーを付与したものである. このプロ トコルは Client が Authorization Server の認証結果に基づいて End-User のアイデンティティを検証可能にする. また同時に End-User の必要最低限のプロフィール情報を, 相互運⽤可能か つ RESTful な形で取得することも可能にする. • OpenID Connect Core 1.0 ⽇本語訳 • http://openid-foundation-japan.github.io/openid-connect-core- 1_0.ja.html • OpenIDファウンデーション・ジャパン翻訳・教育WG Copyright Naohiro Fujie, 2021 23 アイデンティティレイヤー = ID Token、UserInfoエンドポイント
  24. 24. #linedc OAuthとOpenID Connectの違いの例 (code flow) 項⽬ OAuth OpenID Connect 認可リクエストの パラメータ scope 任意 必須(openid) redirect_uri 任意 必須 nonce - 任意 セキュリティ対策 (code置き換えへの対策) PKCE (codeとセッション紐づけ) nonce (codeとid_tokenの紐づけ) トークンの種類 access_token (発⾏対象者の情報なし) id_token (発⾏対象者の情報あり) プロファイル取得⽅法 標準化対象外 userInfoエンドポイント Copyright Naohiro Fujie, 2021 24 キモは「scope=openid」と「id_token」と「userInfoエンドポイント」
  25. 25. #linedc 具体的なフロー (code flow) LINEの場合のエンドポイント • Authorization Endpoint • https://access.line.me/oauth2/v2.1/authorize • Token Endpoint • https://api.line.me/oauth2/v2.1/token • Profile Endpoint • https://api.line.me/v2/profile Copyright Naohiro Fujie, 2021 25
  26. 26. #linedc id_token • JWT(JSON Web Token)形式 • JSON Web Token (JWT) - draft-ietf-oauth-json-web-token-11 ⽇本語訳 • http://openid-foundation-japan.github.io/draft-ietf-oauth-json-web-token- 11.ja.html • OpenIDファウンデーション・ジャパン翻訳・教育WG • 内部構造 • ヘッダ:署名や暗号化形式など • ペイロード:クレーム(属性)セット、暗号化する場合も • シグニチャ:デジタル署名 • Base64Urlエンコードし、”.”で各パートを連結する • eyJhb̶snip--iJ9.eyJpc3̶snip--pwIn0.gC4ub--snip--yBm0 Copyright Naohiro Fujie, 2021 26
  27. 27. #linedc id_tokenの中⾝ • jwt.io(by Auth0)とかjwt.ms(by MS) Copyright Naohiro Fujie, 2021 27
  28. 28. #linedc id_tokenの中⾝ Claim Type Value Notes iss https://access.line.me JWTの発⾏者(issuer)を表す識別⼦ sub U9f1cac4f164ef3f5c02c92d00 67a11a1 JWTの主体(subject)を表す識別⼦ LINEの場合はuserId aud 1516319320 JWTの発⾏先(audience)を表す識別⼦ LINEの場合はclient_id exp 1552324580 JWTの有効期限(UNIX Time) iat 1552320980 JWTの発⾏時刻(UNIX Time) nonce 51501f6a-9a12-4d42-ad72- 0d36e44df96f リクエスト時に設定したnonceの値 リクエストと発⾏されたid_tokenの中の値がマッチ するかどうかを検査し置き換え攻撃を検知する name Naohiro Fujie 名前。LINEの場合は表⽰名 picture https://profile.line- scdn.net/0m0--snip-- xxx プロファイル写真のURL email naohiro.fujie@example.jp メールアドレス Copyright Naohiro Fujie, 2021 28
  29. 29. #linedc セキュアにつかうには • SDKの利活⽤ > プロトコルの仕様に基づき実装 • ステートレスなプロトコルであるHTTP上でリダイレクトを繰り返 しながらブラウザ、認可サーバ、クライアント、リソースの間でや りとりをする • どこで通信を偽装されても⼤丈夫なようにプロトコルは設計されている (stateとかnonceとか) • が、⼿動で実装するとどうしても「繋がった!万歳!」で終わってしまい、 必要な検証を⾶ばしてしまう⼈が多い • 解はできるだけ信頼できるSDK、ライブラリを使うこと • もちろんプロトコルを深く理解して実装することができれば望ましい Copyright Naohiro Fujie, 2021 29
  30. 30. #linedc LINE ログインならではの便利機能 • シームレスにログイン • 「⾃動ログイン」 • https://developers.line.biz/ja/faq/#how-does-auto-login-work • LINE内ブラウザもしくはビルトインブラウザ(iOS/Safari、Android/Chrome) でアクセスするとLINEアプリで⾃動ログイン • UniversalLink、暗黙的インテントを利⽤ • 「シングルサインオン」 • https://developers.line.biz/ja/docs/line-login/integrate-line-login/#line-sso- login • ログイン済みのセッションの保存、ワンタップでログイン可能 Copyright Naohiro Fujie, 2021 30
  31. 31. #linedc LINE ログインならではの便利機能 • パスワードを使わないログイン • 「QRコードログイン」 • https://developers.line.biz/ja/docs/line- login/integrate-line-login/#mail-or-qrcode-login • initial_amr_display=lineqrを指定することにより デフォルトログイン⽅法がQRコードになる • switch_amr=falseを指定するとログイン⽅法の切 り替えを無効にできる(QRコードのみにログイン ⽅法を限定する、等が可能) Copyright Naohiro Fujie, 2021 31
  32. 32. #linedc LINE ログインならではの便利機能 • ログイン時に公式アカウントと友達になる • bot_prompt設定 • normal : 同意画⾯で友達になるかどうか選択させる • aggressive : 同意画⾯の後に友達になることを促す画⾯を出す Copyright Naohiro Fujie, 2021 32 Normal Aggressive
  33. 33. #linedc その他、留意事項 • メールアドレスの取得 • scopeとして指定できるのは、 • openid, email, profileの3種類 • emailを指定しても、あらかじめ許可 設定をしておかないとダメ • Emailはprofileではなくid_tokenのみ に含まれる • そして、tokenレスポンス内のscope にはemailは出てこない(指定していても) Copyright Naohiro Fujie, 2021 33
  34. 34. Get Connected with LINE/LINEを介して実現される様々な繋がりや連携 LINE Developers Community REV UP 2021(以下、「REV UP」) はLINEのコミュニティが主催する国内最 大のLINE関連カンファレンスです。各分野のエキスパートがLINE関連の技術や事例、知見について惜しみ なく発信する様々なセッションが今年も数多く行われます。 また、今年のテーマは「Get Connected with LINE」です。ぜひ、本カンファレンスを介して様々な繋がり出会 いを実現していただければ幸いです。

×