LINEログインの最新アップデートと
アプリ連携ウォークスルー
2021/10/2
富⼠榮 尚寛
@phr_eidentity
⾃⼰紹介
+役割
+ 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 -)
#linedc_revup_A
Agenda
+LINE Login アップデート
+Public Client で LINE Login を安全に使うには
+PKCEを中⼼に実装ウォークスルー
+おまけ)FIDO2 Server
#linedc_revup_A
LINE Login アップデート
+こちらを追いかけてみる(とりあえず最近の分)
+https://developers.line.biz/ja/news/tags/line-login/
⽇付 アップデート 内容
2021/9/21 ⾃動ログインを無効にする
パラメータの追加
⾃動ログインと SSO の両⽅が使える環境においては⾃動ログイ
ンが優先されるようになったが、disable_auto_login=true を指
定すると明⽰的に SSO のみを利⽤
2021/7/12 SSO より ⾃動ログインが
優先される
⾃動ログインと SSO の両⽅が使える環境においては⾃動ログイ
ンが優先されるようになった
2021/6/15 MID → ユーザIDへの変換
API の提供終了
v1 で使っていた MID を v2 へ移⾏する際の変換時に必要な API
の提供が終了
2021/5/12 アサーション署名キーの発
⾏⼿順の変更
鍵ペアの⽣成を LINE サーバ側ではなくローカルで実⾏するよう
に変更
2021/4/9 PKCE 対応 RFC 7636 PKCE に対応。Yahoo! JAPAN アプリからのアクセス
が⾃動ログインに対応
#linedc_revup_A
注⽬の⼀つが PKCE 対応
+PKCE(RFC 7636)※ぴくしー
+https://datatracker.ietf.org/doc/html/rfc7636
+Proof Key for Code Exchange by OAuth Public Clients
+認可コードの横取り攻撃を防ぐための仕組み
#linedc_revup_A
OAuth2.0 の基本︓認可コードフロー
#linedc_revup_A
OAuth2.0 の基本︓認可コードフロー
認可コードをアクセストークンに交換する
際にクライアント認証を⾏う
(通常、client_id/client_secretの利⽤)
→認可コードを横取りされるとアクセス
トークンの取得ができてしまうため
#linedc_revup_A
⼤前提
+Client = アプリケーションの認証を⾏うための情報
(client_id、client_secret)を安全に保存できること
+サーバーサイドで動くアプリケーションなら保護できる
+クライアントサイドで動くパブリッククライアントの場合は︖
+ネイティブアプリ、SPAなど
+特にネイティブアプリだと同⼀カスタムURIスキームの指定で認可
コードを容易に横取り可能
+バックエンドサーバとの組み合わせで回避してきた
#linedc_revup_A
OAuth2.0 の基本︓Implicit フロー
#linedc_revup_A
OAuth2.0 の基本︓Implicit フロー
アクセストークンを直接取得、UA
上で動作するJS等でfragmentから
取り出してクライアントへ送信する
#linedc_revup_A
セキュリティ上の問題
+RFC 6749 セキュリティ上の考慮事項
+10.16. インプリシットフローにおけるリソースオーナーなりすま
しのためのアクセストークン不正利⽤
インプリシットフローを利⽤するパブリッククライアントについて, この仕様はアクセストークンがどのクライアントに発⾏されたかを特定する⽅法をクライアント
に提供しない.
リソースオーナーは攻撃者の悪意のあるクライアントにアクセストークンを許可することにより, 進んでリソースへのアクセスを委任するかもしれない. これは
フィッシングまたは何か他の詐欺が原因となるかもしれない. 攻撃者はまた, なんらかのメカニズムでトークンを盗むかもしれない. それから, 攻撃者は正当なパブ
リッククライアントへのアクセストークンを提供することでリソースオーナーへのなりすましを試みるかもしれない.
インプリシットフロー (response_type=token) では, 攻撃者は認可サーバーからのレスポンスに含まれるトークンを簡単に変更し, 以前攻撃者⾃⾝に発⾏された実
際のアクセストークンに置き換えることができる.
アクセストークンを差し込める信⽤できないアプリケーションを作成する攻撃者により, クライアントのユーザーを特定するためにネイティブアプリケーションと通
信しバックチャネルでアクセストークンを受け取っているサーバーは同様の危険性を持つ.
リソースオーナーだけがそのリソースに対する有効なアクセストークンを提⽰できると仮定されるいかなるパブリッククライアントも, このタイプの攻撃に対して脆
弱である.
このタイプの攻撃は正当なクライアントでリソースオーナーの情報を攻撃者 (悪意のあるクライアント) に公開するかもしれない. これはまた, 合法なクライアントに
て攻撃者にもともとアクセストークンもしくは認可コードを与えられたリソースオーナーと同等の資格で活動することを許可する.
クライアントへのリソースオーナー認証⽅法はこの仕様の範囲外である. ユーザー認証をクライアント (3rdパーティーサインインサービスなど) に委任する認可プロ
セスを使⽤するどんな仕様でも, アクセストークンがその使⽤のために発⾏されたかどうか特定するためのセキュリティメカニズム (オーディエンス制限のあるアク
セストークン) の追加なしにインプリシットフローを利⽤してはならない (MUST NOT).
#linedc_revup_A
セキュリティ上の問題
+RFC 6749 セキュリティ上の考慮事項
+10.16. インプリシットフローにおけるリソースオーナーなりすま
しのためのアクセストークン不正利⽤
インプリシットフローを利⽤するパブリッククライアントについて, この仕様はアクセストークンがどのクライアントに発⾏されたかを特定する⽅法をクライアント
に提供しない.
リソースオーナーは攻撃者の悪意のあるクライアントにアクセストークンを許可することにより, 進んでリソースへのアクセスを委任するかもしれない. これは
フィッシングまたは何か他の詐欺が原因となるかもしれない. 攻撃者はまた, なんらかのメカニズムでトークンを盗むかもしれない. それから, 攻撃者は正当なパブ
リッククライアントへのアクセストークンを提供することでリソースオーナーへのなりすましを試みるかもしれない.
インプリシットフロー (response_type=token) では, 攻撃者は認可サーバーからのレスポンスに含まれるトークンを簡単に変更し, 以前攻撃者⾃⾝に発⾏された実
際のアクセストークンに置き換えることができる.
アクセストークンを差し込める信⽤できないアプリケーションを作成する攻撃者により, クライアントのユーザーを特定するためにネイティブアプリケーションと通
信しバックチャネルでアクセストークンを受け取っているサーバーは同様の危険性を持つ.
リソースオーナーだけがそのリソースに対する有効なアクセストークンを提⽰できると仮定されるいかなるパブリッククライアントも, このタイプの攻撃に対して脆
弱である.
このタイプの攻撃は正当なクライアントでリソースオーナーの情報を攻撃者 (悪意のあるクライアント) に公開するかもしれない. これはまた, 合法なクライアントに
て攻撃者にもともとアクセストークンもしくは認可コードを与えられたリソースオーナーと同等の資格で活動することを許可する.
クライアントへのリソースオーナー認証⽅法はこの仕様の範囲外である. ユーザー認証をクライアント (3rdパーティーサインインサービスなど) に委任する認可プロ
セスを使⽤するどんな仕様でも, アクセストークンがその使⽤のために発⾏されたかどうか特定するためのセキュリティメカニズム (オーディエンス制限のあるアク
セストークン) の追加なしにインプリシットフローを利⽤してはならない (MUST NOT).
要は、できれば使うな、と
#linedc_revup_A
となると
+クライアント認証=意図したクライアントに対してのみアク
セストークンを発⾏することができる仕組みが必要
+Proof Key for Code Exchange by OAuth Public Clients
+以下のクライアントが⼀致することを証明するための仕組み
+認可コードを持ってくるクライアント
+認可サーバが元々認可コードを発⾏したクライアント
#linedc_revup_A
認可コードフロー+PKCE
Code_verifierの
⽣成・保持
Code_challenge/
methodの⽣成、
送信
Code_challenge/
methodの保存と
認可コード発⾏
code_verifierと保持し
ておいた
code_challengeで検証
認可コードと
code_verifierの
送信
#linedc_revup_A
超シンプルな JS App を作ってみる
<button id="startButton">Start OAuth Flow</button>
<scritp>
document.getElementById("startButton").onclick =
function() {
// code_verifierの⽣成
var codeVerifier = generateRandomString(64);
参考コード
https://github.com/curityio/pkce-javascript-example
#linedc_revup_A
code_verifierの⽣成(ランダム⽂字列)
function generateRandomString(length) {
var possible = "ABCDEFGHIJ…456789";
for (var i = 0; i < length; i++) {
text += possible.charAt(Math.floor(Math.random()
* possible.length));
}
return text;
}
43⽂字〜128⽂字のURL safeな⽂字列
[A-Z] / [a-z] / [0-9] / "-" / "." / "_" / "~"
#linedc_revup_A
code_challengeの⽣成
(method:S256の場合)
async function generateCodeChallenge(codeVerifier) {
var digest = await crypto.subtle.digest("SHA-256",
new TextEncoder().encode(codeVerifier));
return btoa(String.fromCharCode(...new
Uint8Array(digest))).replace(/=/g, '').replace(/¥+/g, '-
').replace(/¥//g, '_')
}
code_challenge = BASE64URL-
ENCODE(SHA256(ASCII(code_verifier)))
#linedc_revup_A
セッションにcode_verifierを保存して
認可サーバへリダイレクト
generateCodeChallenge(codeVerifier).then(function(codeChallenge)
{
window.sessionStorage.setItem("code_verifier", codeVerifier);
var redirectUri = window.location.href.split('?')[0];
var args = new URLSearchParams({
client_idなど,
code_challenge_method: "S256",
code_challenge: codeChallenge});
window.location = authorizeEndpoint + "/?" + args;
#linedc_revup_A
認可コードを受け取り、code_verifier
と⼀緒に認可サーバへ送信
xhr.open("POST", tokenEndpoint, true);
xhr.send(new URLSearchParams({
client_id: clientId,
code_verifier: window.sessionStorage.getItem("code_verifier"),
grant_type: "authorization_code",
redirect_uri: location.href.replace(location.search, ʼʼ),
code: code
}));
#linedc_revup_A
id_tokenの受け取り
if (xhr.status == 200) {
message = "Hello "+decodeJwt(response.id_token).name;
}
※scopeにopenidを指定したので、id_tokenを受け取って名前を表⽰
#linedc_revup_A
動かしてみる Codeはこちら
https://github.com/fujie/memo/blob/main/withpkce_pub.html
#linedc_revup_A
Yahoo!JAPANアプリでの挙動
PKCEを無効にすると
このボタンを押しても
反応しなくなる
#linedc_revup_A
おまけ)FIDOサーバー
+2021/8/5 ついに公開されました。
+https://github.com/line/line-fido2-server
+⾃社サービスに FIDO を使ったパスワードレス認証を組み込
みたい⼈はぜひ参考にしてみると良いと思います。
+ファーストタッチを blog に書いたのでこちらで。
+https://idmlab.eidentity.jp/2021/08/linefido2oss.html
+もっと深く触った結果はまとまり次第書こうかと。
+ちなみにFIDO Japan WG の副座⻑は LINE の市原さん
#linedc_revup_A
まとめ
+LINE ログイン、⽇々アップデートされてます
+安全にアプリ実装をするために必要な仕様にも対応して⾏っ
ていますので、キャッチアップしていきましょう
+パスワードレスで強度の⾼い認証機構である FIDO にも
LINE は取り組んでいるので⾃社サイトにもどんどん取り込
んでいきましょう
#linedc_revup_A

More Related Content

PDF
LINE Login総復習
PDF
ざっくり解説 LINE ログイン
PPTX
OpenID Connect: An Overview
PDF
Microsoft's Implementation Roadmap for FIDO2
PDF
OAuth & OpenID Connect Deep Dive
PPTX
OAuth in the Wild
PPTX
Webauthn Authentication
PDF
DynamoDBの初心者に伝えたい初めて触るときの勘所
LINE Login総復習
ざっくり解説 LINE ログイン
OpenID Connect: An Overview
Microsoft's Implementation Roadmap for FIDO2
OAuth & OpenID Connect Deep Dive
OAuth in the Wild
Webauthn Authentication
DynamoDBの初心者に伝えたい初めて触るときの勘所

What's hot (20)

PDF
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
PDF
UXDev Summit Keynote : A real world story of Angular and Apache Unomi integra...
PDF
[AWSマイスターシリーズ] AWS Billingについて
PDF
PyCon 2012: Militarizing Your Backyard: Computer Vision and the Squirrel Hordes
PPTX
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
PDF
プロトコルから見るID連携
PDF
5 Top Enterprises Making IAM a Priority
PDF
AWS Summit Seoul 2023 | Amazon EKS 데이터 전송 비용 절감 및 카오스 엔지니어링 적용 사례
PPTX
OAuth2 + API Security
PDF
AWS Summit Seoul 2023 | 가격은 저렴, 성능은 최대로! 확 달라진 Amazon EC2 알아보기
PDF
Overview of secret management solutions and architecture
PDF
Amazon SageMaker 오버뷰 - 강성문, AWS AI/ML 스페셜리스트 :: AIML 특집 웨비나
PDF
WebAuthn and Security Keys
PPT
OAuth 2.0 and OpenId Connect
PPTX
Secure your app with keycloak
PDF
認証の課題とID連携の実装 〜ハンズオン〜
PDF
AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...
PDF
エンタープライズITでのOpenID Connect利用ガイドライン
PPTX
Inversion of Control and Dependency Injection
PDF
[213]monitoringwithscouter 이건희
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
UXDev Summit Keynote : A real world story of Angular and Apache Unomi integra...
[AWSマイスターシリーズ] AWS Billingについて
PyCon 2012: Militarizing Your Backyard: Computer Vision and the Squirrel Hordes
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
プロトコルから見るID連携
5 Top Enterprises Making IAM a Priority
AWS Summit Seoul 2023 | Amazon EKS 데이터 전송 비용 절감 및 카오스 엔지니어링 적용 사례
OAuth2 + API Security
AWS Summit Seoul 2023 | 가격은 저렴, 성능은 최대로! 확 달라진 Amazon EC2 알아보기
Overview of secret management solutions and architecture
Amazon SageMaker 오버뷰 - 강성문, AWS AI/ML 스페셜리스트 :: AIML 특집 웨비나
WebAuthn and Security Keys
OAuth 2.0 and OpenId Connect
Secure your app with keycloak
認証の課題とID連携の実装 〜ハンズオン〜
AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...
エンタープライズITでのOpenID Connect利用ガイドライン
Inversion of Control and Dependency Injection
[213]monitoringwithscouter 이건희
Ad

Similar to LINEログインの最新アップデートとアプリ連携ウォークスルー (20)

PDF
Keycloakの動向
PDF
Authentication and Authorization of The Latest Keycloak
PDF
FAPI Security について聞いてきた話(2017/08/18 社内勉強会)
PDF
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
PDF
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
PPTX
認証サービスへのWebAuthnの導入
PDF
OAuth Security Workshop 2017 #osw17
PDF
Azure ADとIdentity管理
PPTX
FAPI and beyond - よりよいセキュリティのために
PPTX
20150723 最近の興味動向 fido編
PDF
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
PPTX
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
PDF
実装して理解するLINE LoginとOpenID Connect入門
PDF
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
PDF
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
PDF
株式会社カサレアル 山本による講演「認証・認可におけるKeycloakの活用」の資料
PDF
LIFFとの連携でさらに強力に。こんなに使えるLINEログイン
PDF
Keycloakの最近のトピック
PDF
#OAuth Security Workshop 2019 Recap @ #Authlete Partner Meetup Spring 2019
PPTX
KeycloakでAPI認可に入門する
Keycloakの動向
Authentication and Authorization of The Latest Keycloak
FAPI Security について聞いてきた話(2017/08/18 社内勉強会)
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
認証サービスへのWebAuthnの導入
OAuth Security Workshop 2017 #osw17
Azure ADとIdentity管理
FAPI and beyond - よりよいセキュリティのために
20150723 最近の興味動向 fido編
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
実装して理解するLINE LoginとOpenID Connect入門
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
株式会社カサレアル 山本による講演「認証・認可におけるKeycloakの活用」の資料
LIFFとの連携でさらに強力に。こんなに使えるLINEログイン
Keycloakの最近のトピック
#OAuth Security Workshop 2019 Recap @ #Authlete Partner Meetup Spring 2019
KeycloakでAPI認可に入門する
Ad

More from Naohiro Fujie (20)

PDF
分散型IDと検証可能なアイデンティティ技術概要
PDF
今なら間に合う分散型IDとEntra Verified ID
PDF
Azure AD B2CにIdPを色々と繋いでみる
PDF
Azure AD x LINE x Auth0
PDF
LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向
PDF
MicrosoftのDID/VC実装概要
PDF
自己主権型IDと分散型ID
PDF
Azure ADの外部コラボレーションとBYOID
PDF
祝!公式サポート Auth0 + LINE Login
PDF
IDaaSにSign in with Appleをつないでみた
PDF
次世代KYCと自己主権型アイデンティティの動向
PDF
これからの KYC と Identity on Blockchain の動向
PDF
SSIとDIDで何を解決したいのか?(β版)
PDF
教育機関におけるBYOIDとKYC
PDF
組織におけるアイデンティティ管理の基本的な考え方
PDF
コンシューマIDのエンタープライズ領域での活用
PDF
大学等におけるAzure AD B2Cを使用したSNS認証の活用
PDF
Azure AD B2C + LINE 学校や企業における次世代 ID/ メッセージ基盤
PDF
Azure ADとLINE連携により実現する学校や企業における次世代ID/メッセージ基盤
PDF
認証/メッセージング領域へのモバイル/ソーシャルネットワークIDの活用
分散型IDと検証可能なアイデンティティ技術概要
今なら間に合う分散型IDとEntra Verified ID
Azure AD B2CにIdPを色々と繋いでみる
Azure AD x LINE x Auth0
LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向
MicrosoftのDID/VC実装概要
自己主権型IDと分散型ID
Azure ADの外部コラボレーションとBYOID
祝!公式サポート Auth0 + LINE Login
IDaaSにSign in with Appleをつないでみた
次世代KYCと自己主権型アイデンティティの動向
これからの KYC と Identity on Blockchain の動向
SSIとDIDで何を解決したいのか?(β版)
教育機関におけるBYOIDとKYC
組織におけるアイデンティティ管理の基本的な考え方
コンシューマIDのエンタープライズ領域での活用
大学等におけるAzure AD B2Cを使用したSNS認証の活用
Azure AD B2C + LINE 学校や企業における次世代 ID/ メッセージ基盤
Azure ADとLINE連携により実現する学校や企業における次世代ID/メッセージ基盤
認証/メッセージング領域へのモバイル/ソーシャルネットワークIDの活用

Recently uploaded (7)

PDF
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
PDF
Working as an OSS Developer at Ruby Association Activity Report 2025
PDF
AIシステムのセキュリティ:脅威となりつつあるAIの現状と課題 [English] Security of AI Systems: The Current...
PDF
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
PPTX
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
PDF
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
Working as an OSS Developer at Ruby Association Activity Report 2025
AIシステムのセキュリティ:脅威となりつつあるAIの現状と課題 [English] Security of AI Systems: The Current...
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回

LINEログインの最新アップデートとアプリ連携ウォークスルー