SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
実装して理解する
LINE Login と OpenID Connect 入門
Naohiro Fujie
2019/03/15
自己紹介
• 役割
• 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
Agenda
• OpenID Connectとは
• OpenID Connectとは
• OAuth2.0とは
• 認証/ID連携(OAuth認証)の誤用理由
• 認証/ID連携に使うには?
• OAuthとOpenID Connectの違いの例
• 具体的なフロー
• id_token
• LINE LoginとOpenID Connect
• LINE LoginとOpenID Connect
• LINE Login(v2.1)の特徴(クセ)
• その他のトピックス
• 実習
Copyright Naohiro Fujie, 2019 3
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, 2019 4
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, 2019 5
• サードパーティアプリケーション:OAuthクライアント
• HTTPサービス:リソースサーバ
• 限定的なアクセス:スコープ
• 可能にする(サービス):認可サーバ
Copyright Naohiro Fujie, 2019 6
OAuthクライアント
(Webアプリ、スマホアプリなど)
リソースサーバ
(API、サービス)
認可サーバ
(OAuthサーバ)
利用者
(リソースオーナー)
スコープに基づき許可
(認可)
認可に基づき
アクセストークンを発行
アクセストークンを
提示してアクセス
リソースを所有
典型的な使われ方
• カレンダーアプリとGoogle Calendarの連携
Copyright Naohiro Fujie, 2019 7
カレンダーアプリ
Google Calendar API
Google Account
利用者
(リソースオーナー)
カレンダーアプリに対して
アイテムの読み出しを許可
認可に基づき
アクセストークンを発行
アクセストークンを
提示してアクセス
リソースを所有
認証/ID連携(OAuth認証)の誤用理由①
• アクセス許可を行う前にログインする為、アクセストークンを
認証の結果得られたものとして扱ってしまう
Copyright Naohiro Fujie, 2019 8
カレンダーアプリ
Google Calendar API
Google Account
利用者
(リソースオーナー)
カレンダーアプリに対して
アイテムの読み出しを許可
認可に基づき
アクセストークンを発行
アクセストークンを
提示してアクセス
リソースを所有
ログイン(認証)
認証/ID連携(OAuth認証)の誤用理由②
• 殆どのサービスがプロファイル取得APIを用意しており、アク
セストークンでID情報の取得が可能。アクセストークンの持ち
主=リソースオーナーとみなしてしまう
Copyright Naohiro Fujie, 2019 9
カレンダーアプリ
Google Account API
Google Account
利用者
(リソースオーナー)
カレンダーアプリに対して
アイテムの読み出しを許可
認可に基づき
アクセストークンを発行
アクセストークンを
提示してアクセス
リソースを所有
ID情報の取得が可能
よく考えると
• アクセストークンは無記名式の切符(誰が持ってきてもOK)
• 認可サーバはアクセストークンの有効性検証は出来るが、持参人=発行者
かどうかは検証できない
• 何故なら、
• 基本的にアクセストークンは単なる文字列(ハンドルトークン)
• ※最近はJWT形式のAssertion Tokenもありますがややこしくなるので割愛
• 認可サーバには以下のように保存されている(イメージ)
• Authorization HeaderにBearer xxxx(トークン)って書きますよね?
• Bearer(ベアラ)=持参人。持ってきた人に利用を許可する、ということ
• 参考)https://idmlab.eidentity.jp/2013/09/bearer-token.html
Copyright Naohiro Fujie, 2019 10
アクセストークン 発行者 有効期限 スコープ
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
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, 2019 11
認証/ID連携は仕様のスコープ外
認証/ID連携に使うには?
• OAuthクライアントがリソースサーバ側のユーザ情報を取得でき
ること
• 認証された結果を把握できること
• リソースオーナーのID情報を把握できること
• OpenID Connectにおける実現方法=アイデンティティレイヤー
• ID Token : 認証結果(アサーション)の取得方法の標準化
• UserInfoエンドポイント : ID情報の取得方法の標準化
※ID TokenにもID情報を含められるがトークンのサイズの巨大化の問題や認証時以外の情報取得に対
応するためUserInfoを使用
Copyright Naohiro Fujie, 2019 12
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, 2019 13
アイデンティティレイヤー
=
ID Token、UserInfoエンドポイント
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, 2019 14
キモは「scope=openid」と「id_token」と「userInfoエンドポイント」
具体的なフロー
(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, 2019 15
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, 2019 16
id_tokenの中身
• jwt.io(by Auth0)とかjwt.ms(by MS)
Copyright Naohiro Fujie, 2019 17
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@eidentity.jp メールアドレス
Copyright Naohiro Fujie, 2019 18
LINE LoginとOpenID Connect
• 2017年9月
• LINE Login v2.1でOpenID Connectに対応(v2.0まではOAuth2.0)
• 2018年3月
• eメールアドレス属性の提供(id_token)に対応
• 2018年6月
• OpenID Certificationにより認定(Basic OP)
• https://openid.net/certification/
• 2019年2月
• ブラウザシナリオでのQRコードログインに対応
Copyright Naohiro Fujie, 2019 19
LINE Login(v2.1)の特徴(クセ)
• OpenID Provider Configuration Documentから探る
• https://access.line.me/.well-known/openid-configuration
Copyright Naohiro Fujie, 2019 20
{
"issuer": "https://access.line.me",
"authorization_endpoint": "https://access.line.me/oauth2/v2.1/authorize",
"token_endpoint": "https://api.line.me/oauth2/v2.1/token",
"jwks_uri": "https://api.line.me/oauth2/v2.1/certs",
"response_types_supported": [ "code" ],
"subject_types_supported": [ "pairwise" ],
"id_token_signing_alg_values_supported": [ "ES256" ]
}
LINE Login(v2.1)の特徴(クセ)
パラメータ 値 説明
response_types_supported code Code flowのみサポート
subject_types_supported pairwise 同一ユーザでもアプリケーション毎にユニークな
subが発行される
LINEの場合はアプリ単位というよりプロバイダ単
位なんですが・・・
id_token_signing_alg_values_s
upported
ES256 ES256(ECDSA using P-256 curve and SHA-256
hash)をサポートとありますが、id_tokenのヘッ
ダを見ると、HS256・・・
スペック上はRS256は必須で含まれないとダメな
はずなんですが・・・
token_endpoint_auth_methods
_supported
なし tokenエンドポイントのクライアント認証の方法の
指定がない(OPTIONALなので間違いではない)
ので、ドキュメントを見るとclient_secret_post
(client_idとclient_secretをPOSTする)が使われ
ている。が、実際はclient_secret_basic(BASIC認
証)でも動く
Copyright Naohiro Fujie, 2019 21
LINE Login(v2.1)の特徴(クセ)
• メールアドレスの取得
• scopeとして指定できるのは、
• openid, email, profileの3種類
• emailを指定しても、あらかじめ許可
設定をしておかないとダメ
• Emailはprofileではなくid_tokenのみ
に含まれる
• そして、tokenレスポンス内のscope
にはemailは出てこない(指定していても)
Copyright Naohiro Fujie, 2019 22
LINE Login(v2.1)の特徴(クセ)
• その他特殊パラメータ
• bot_prompt(ボットの友だち追加の方法)
• Normal: 同意画面の中でボットと友達になるチェックを入れる
• Aggressive: 別画面でボットと友達になる
Copyright Naohiro Fujie, 2019 23
Normal Aggressive
LINE Login(v2.1)の特徴(クセ)
Copyright Naohiro Fujie, 2019 24
クライアント 自動ログイン
*1
メールアドレス+
パスワード
QRコード 電話番号
*2
モバイル
(標準ブラウザ)
○
モバイル
(標準外ブラウザ)
○
PCブラウザ ○ ○
PC版アプリ ○ ○ ○
*1. 自動ログインの動作条件:https://developers.line.biz/ja/faq/#-2017-11-08
*2. 電話番号ログインの条件:PC版LINEでユーザ登録をした場合のみ
Copyright Naohiro Fujie, 2019 25
その他のトピックス
• FIDO対応(2019年春予定)
• https://engineering.linecorp.com/ja/blog/fido-at-line/
Copyright Naohiro Fujie, 2019 26
実習
• コードを見ながら解説します
Copyright Naohiro Fujie, 2019 27
実習
• 以下に手順とコードを置いてあります
• https://github.com/fujie/line_login
• 各自手順に従い作業を進めてください
• 不明点はスタッフへお問い合わせください
Copyright Naohiro Fujie, 2019 28

Mais conteúdo relacionado

Mais procurados

なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景Tatsuo Kudo
 
SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)Naohiro Fujie
 
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15OpenID Foundation Japan
 
OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向Tatsuo Kudo
 
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified IDNaohiro Fujie
 
分散型IDと検証可能なアイデンティティ技術概要
分散型IDと検証可能なアイデンティティ技術概要分散型IDと検証可能なアイデンティティ技術概要
分散型IDと検証可能なアイデンティティ技術概要Naohiro Fujie
 
俺が考えた最強のID連携デザインパターン
俺が考えた最強のID連携デザインパターン俺が考えた最強のID連携デザインパターン
俺が考えた最強のID連携デザインパターンMasaru Kurahayashi
 
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~Tatsuo Kudo
 
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawawsOAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawawsTatsuo Kudo
 
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDayマイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay都元ダイスケ Miyamoto
 
Azure AD による Web API の 保護
Azure AD による Web API の 保護 Azure AD による Web API の 保護
Azure AD による Web API の 保護 junichi anno
 
OpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルOpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルMasaru Kurahayashi
 
FIDO2 ~ パスワードのいらない世界へ
FIDO2 ~ パスワードのいらない世界へFIDO2 ~ パスワードのいらない世界へ
FIDO2 ~ パスワードのいらない世界へFIDO Alliance
 
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)Tatsuo Kudo
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 

Mais procurados (20)

なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景
 
SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)
 
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
 
OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向
 
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
 
分散型IDと検証可能なアイデンティティ技術概要
分散型IDと検証可能なアイデンティティ技術概要分散型IDと検証可能なアイデンティティ技術概要
分散型IDと検証可能なアイデンティティ技術概要
 
俺が考えた最強のID連携デザインパターン
俺が考えた最強のID連携デザインパターン俺が考えた最強のID連携デザインパターン
俺が考えた最強のID連携デザインパターン
 
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
 
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawawsOAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
 
Keycloakのステップアップ認証について
Keycloakのステップアップ認証についてKeycloakのステップアップ認証について
Keycloakのステップアップ認証について
 
FIDO認証によるパスワードレスログイン実装入門
FIDO認証によるパスワードレスログイン実装入門FIDO認証によるパスワードレスログイン実装入門
FIDO認証によるパスワードレスログイン実装入門
 
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDayマイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
 
Azure AD による Web API の 保護
Azure AD による Web API の 保護 Azure AD による Web API の 保護
Azure AD による Web API の 保護
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
 
OpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルOpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクル
 
OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方
 
FIDO2 ~ パスワードのいらない世界へ
FIDO2 ~ パスワードのいらない世界へFIDO2 ~ パスワードのいらない世界へ
FIDO2 ~ パスワードのいらない世界へ
 
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 

Semelhante a 実装して理解するLINE LoginとOpenID Connect入門

OpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンスOpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンスOpenID Foundation Japan
 
『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説
『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説
『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説Takashi Yahata
 
OpenID ConnectとSCIMによるエンタープライズでのID連携活用に向けて
OpenID ConnectとSCIMによるエンタープライズでのID連携活用に向けてOpenID ConnectとSCIMによるエンタープライズでのID連携活用に向けて
OpenID ConnectとSCIMによるエンタープライズでのID連携活用に向けてTakashi Yahata
 
Keycloakの紹介と最新開発動向
Keycloakの紹介と最新開発動向Keycloakの紹介と最新開発動向
Keycloakの紹介と最新開発動向Yuichi Nakamura
 
認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向Tatsuo Kudo
 
OpenID ConnectとSCIMのエンタープライズ利用ガイドライン
OpenID ConnectとSCIMのエンタープライズ利用ガイドラインOpenID ConnectとSCIMのエンタープライズ利用ガイドライン
OpenID ConnectとSCIMのエンタープライズ利用ガイドラインTakashi Yahata
 
Spring Social でソーシャルログインを実装する
Spring Social でソーシャルログインを実装するSpring Social でソーシャルログインを実装する
Spring Social でソーシャルログインを実装するRakuten Group, Inc.
 
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
 
OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020
OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020
OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020OpenID Foundation Japan
 
IDaaSにSign in with Appleをつないでみた
IDaaSにSign in with AppleをつないでみたIDaaSにSign in with Appleをつないでみた
IDaaSにSign in with AppleをつないでみたNaohiro Fujie
 
クラウドにおける Windows Azure Active Directory の役割
クラウドにおける Windows Azure Active Directory の役割クラウドにおける Windows Azure Active Directory の役割
クラウドにおける Windows Azure Active Directory の役割junichi anno
 
Yahoo! JAPANのOpenID Certified Mark取得について
Yahoo! JAPANのOpenID Certified Mark取得についてYahoo! JAPANのOpenID Certified Mark取得について
Yahoo! JAPANのOpenID Certified Mark取得についてMasaru Kurahayashi
 
Azure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみるAzure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみるNaohiro Fujie
 
Azure ADとIdentity管理
Azure ADとIdentity管理Azure ADとIdentity管理
Azure ADとIdentity管理Naohiro Fujie
 
既存RailsアプリをSSO化して、本番環境で活用した話【WESEEK Tech Conf #12】
既存RailsアプリをSSO化して、本番環境で活用した話【WESEEK Tech Conf #12】既存RailsアプリをSSO化して、本番環境で活用した話【WESEEK Tech Conf #12】
既存RailsアプリをSSO化して、本番環境で活用した話【WESEEK Tech Conf #12】WESEEKWESEEK
 
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_insideAuthlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_insideTatsuo Kudo
 
OpenID TechNight - Ping Identity 製品紹介
OpenID TechNight - Ping Identity 製品紹介OpenID TechNight - Ping Identity 製品紹介
OpenID TechNight - Ping Identity 製品紹介Daisuke Fuke
 
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID ConnectYAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID ConnectRyo Ito
 
091009 Identity Conference #6 ritou
091009 Identity Conference #6 ritou091009 Identity Conference #6 ritou
091009 Identity Conference #6 ritouRyo Ito
 

Semelhante a 実装して理解するLINE LoginとOpenID Connect入門 (20)

OpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンスOpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンス
 
『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説
『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説
『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説
 
OpenID ConnectとSCIMによるエンタープライズでのID連携活用に向けて
OpenID ConnectとSCIMによるエンタープライズでのID連携活用に向けてOpenID ConnectとSCIMによるエンタープライズでのID連携活用に向けて
OpenID ConnectとSCIMによるエンタープライズでのID連携活用に向けて
 
Keycloakの紹介と最新開発動向
Keycloakの紹介と最新開発動向Keycloakの紹介と最新開発動向
Keycloakの紹介と最新開発動向
 
認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向
 
OpenID ConnectとSCIMのエンタープライズ利用ガイドライン
OpenID ConnectとSCIMのエンタープライズ利用ガイドラインOpenID ConnectとSCIMのエンタープライズ利用ガイドライン
OpenID ConnectとSCIMのエンタープライズ利用ガイドライン
 
Spring Social でソーシャルログインを実装する
Spring Social でソーシャルログインを実装するSpring Social でソーシャルログインを実装する
Spring Social でソーシャルログインを実装する
 
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
 
OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020
OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020
OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020
 
IDaaSにSign in with Appleをつないでみた
IDaaSにSign in with AppleをつないでみたIDaaSにSign in with Appleをつないでみた
IDaaSにSign in with Appleをつないでみた
 
クラウドにおける Windows Azure Active Directory の役割
クラウドにおける Windows Azure Active Directory の役割クラウドにおける Windows Azure Active Directory の役割
クラウドにおける Windows Azure Active Directory の役割
 
Yahoo! JAPANのOpenID Certified Mark取得について
Yahoo! JAPANのOpenID Certified Mark取得についてYahoo! JAPANのOpenID Certified Mark取得について
Yahoo! JAPANのOpenID Certified Mark取得について
 
Azure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみるAzure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみる
 
Azure ADとIdentity管理
Azure ADとIdentity管理Azure ADとIdentity管理
Azure ADとIdentity管理
 
既存RailsアプリをSSO化して、本番環境で活用した話【WESEEK Tech Conf #12】
既存RailsアプリをSSO化して、本番環境で活用した話【WESEEK Tech Conf #12】既存RailsアプリをSSO化して、本番環境で活用した話【WESEEK Tech Conf #12】
既存RailsアプリをSSO化して、本番環境で活用した話【WESEEK Tech Conf #12】
 
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_insideAuthlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
 
OpenID TechNight - Ping Identity 製品紹介
OpenID TechNight - Ping Identity 製品紹介OpenID TechNight - Ping Identity 製品紹介
OpenID TechNight - Ping Identity 製品紹介
 
OCHaCafe#5 - 避けては通れない!認証・認可
OCHaCafe#5 - 避けては通れない!認証・認可OCHaCafe#5 - 避けては通れない!認証・認可
OCHaCafe#5 - 避けては通れない!認証・認可
 
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID ConnectYAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
 
091009 Identity Conference #6 ritou
091009 Identity Conference #6 ritou091009 Identity Conference #6 ritou
091009 Identity Conference #6 ritou
 

Mais de Naohiro Fujie

LINEログインの最新アップデートとアプリ連携ウォークスルー
LINEログインの最新アップデートとアプリ連携ウォークスルーLINEログインの最新アップデートとアプリ連携ウォークスルー
LINEログインの最新アップデートとアプリ連携ウォークスルーNaohiro Fujie
 
Azure AD x LINE x Auth0
Azure AD x LINE x Auth0Azure AD x LINE x Auth0
Azure AD x LINE x Auth0Naohiro Fujie
 
LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向
LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向
LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向Naohiro Fujie
 
MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要Naohiro Fujie
 
LIFFとの連携でさらに強力に。こんなに使えるLINEログイン
LIFFとの連携でさらに強力に。こんなに使えるLINEログインLIFFとの連携でさらに強力に。こんなに使えるLINEログイン
LIFFとの連携でさらに強力に。こんなに使えるLINEログインNaohiro Fujie
 
自己主権型IDと分散型ID
自己主権型IDと分散型ID自己主権型IDと分散型ID
自己主権型IDと分散型IDNaohiro Fujie
 
Azure ADの外部コラボレーションとBYOID
Azure ADの外部コラボレーションとBYOIDAzure ADの外部コラボレーションとBYOID
Azure ADの外部コラボレーションとBYOIDNaohiro Fujie
 
祝!公式サポート Auth0 + LINE Login
祝!公式サポート Auth0 + LINE Login祝!公式サポート Auth0 + LINE Login
祝!公式サポート Auth0 + LINE LoginNaohiro Fujie
 
次世代KYCと自己主権型アイデンティティの動向
次世代KYCと自己主権型アイデンティティの動向次世代KYCと自己主権型アイデンティティの動向
次世代KYCと自己主権型アイデンティティの動向Naohiro Fujie
 
これからの KYC と Identity on Blockchain の動向
これからの KYC と Identity on Blockchain の動向これからの KYC と Identity on Blockchain の動向
これからの KYC と Identity on Blockchain の動向Naohiro Fujie
 
教育機関におけるBYOIDとKYC
教育機関におけるBYOIDとKYC教育機関におけるBYOIDとKYC
教育機関におけるBYOIDとKYCNaohiro Fujie
 
組織におけるアイデンティティ管理の基本的な考え方
組織におけるアイデンティティ管理の基本的な考え方組織におけるアイデンティティ管理の基本的な考え方
組織におけるアイデンティティ管理の基本的な考え方Naohiro Fujie
 
コンシューマIDのエンタープライズ領域での活用
コンシューマIDのエンタープライズ領域での活用コンシューマIDのエンタープライズ領域での活用
コンシューマIDのエンタープライズ領域での活用Naohiro Fujie
 
大学等におけるAzure AD B2Cを使用したSNS認証の活用
大学等におけるAzure AD B2Cを使用したSNS認証の活用大学等におけるAzure AD B2Cを使用したSNS認証の活用
大学等におけるAzure AD B2Cを使用したSNS認証の活用Naohiro Fujie
 
Azure AD B2C + LINE 学校や企業における次世代 ID/ メッセージ基盤
Azure AD B2C + LINE 学校や企業における次世代 ID/ メッセージ基盤Azure AD B2C + LINE 学校や企業における次世代 ID/ メッセージ基盤
Azure AD B2C + LINE 学校や企業における次世代 ID/ メッセージ基盤Naohiro Fujie
 
Azure ADとLINE連携により実現する学校や企業における次世代ID/メッセージ基盤
Azure ADとLINE連携により実現する学校や企業における次世代ID/メッセージ基盤Azure ADとLINE連携により実現する学校や企業における次世代ID/メッセージ基盤
Azure ADとLINE連携により実現する学校や企業における次世代ID/メッセージ基盤Naohiro Fujie
 
認証/メッセージング領域へのモバイル/ソーシャルネットワークIDの活用
認証/メッセージング領域へのモバイル/ソーシャルネットワークIDの活用認証/メッセージング領域へのモバイル/ソーシャルネットワークIDの活用
認証/メッセージング領域へのモバイル/ソーシャルネットワークIDの活用Naohiro Fujie
 
大学等におけるAzure AD B2Cを使用したSNS認証の活用
大学等におけるAzure AD B2Cを使用したSNS認証の活用大学等におけるAzure AD B2Cを使用したSNS認証の活用
大学等におけるAzure AD B2Cを使用したSNS認証の活用Naohiro Fujie
 
アイデンティティ API とデータ統合プラットフォームの活用
アイデンティティ API とデータ統合プラットフォームの活用アイデンティティ API とデータ統合プラットフォームの活用
アイデンティティ API とデータ統合プラットフォームの活用Naohiro Fujie
 
Office365のID基盤活用とセキュリティ上の注意点
Office365のID基盤活用とセキュリティ上の注意点Office365のID基盤活用とセキュリティ上の注意点
Office365のID基盤活用とセキュリティ上の注意点Naohiro Fujie
 

Mais de Naohiro Fujie (20)

LINEログインの最新アップデートとアプリ連携ウォークスルー
LINEログインの最新アップデートとアプリ連携ウォークスルーLINEログインの最新アップデートとアプリ連携ウォークスルー
LINEログインの最新アップデートとアプリ連携ウォークスルー
 
Azure AD x LINE x Auth0
Azure AD x LINE x Auth0Azure AD x LINE x Auth0
Azure AD x LINE x Auth0
 
LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向
LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向
LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向
 
MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要
 
LIFFとの連携でさらに強力に。こんなに使えるLINEログイン
LIFFとの連携でさらに強力に。こんなに使えるLINEログインLIFFとの連携でさらに強力に。こんなに使えるLINEログイン
LIFFとの連携でさらに強力に。こんなに使えるLINEログイン
 
自己主権型IDと分散型ID
自己主権型IDと分散型ID自己主権型IDと分散型ID
自己主権型IDと分散型ID
 
Azure ADの外部コラボレーションとBYOID
Azure ADの外部コラボレーションとBYOIDAzure ADの外部コラボレーションとBYOID
Azure ADの外部コラボレーションとBYOID
 
祝!公式サポート Auth0 + LINE Login
祝!公式サポート Auth0 + LINE Login祝!公式サポート Auth0 + LINE Login
祝!公式サポート Auth0 + LINE Login
 
次世代KYCと自己主権型アイデンティティの動向
次世代KYCと自己主権型アイデンティティの動向次世代KYCと自己主権型アイデンティティの動向
次世代KYCと自己主権型アイデンティティの動向
 
これからの KYC と Identity on Blockchain の動向
これからの KYC と Identity on Blockchain の動向これからの KYC と Identity on Blockchain の動向
これからの KYC と Identity on Blockchain の動向
 
教育機関におけるBYOIDとKYC
教育機関におけるBYOIDとKYC教育機関におけるBYOIDとKYC
教育機関におけるBYOIDとKYC
 
組織におけるアイデンティティ管理の基本的な考え方
組織におけるアイデンティティ管理の基本的な考え方組織におけるアイデンティティ管理の基本的な考え方
組織におけるアイデンティティ管理の基本的な考え方
 
コンシューマIDのエンタープライズ領域での活用
コンシューマIDのエンタープライズ領域での活用コンシューマIDのエンタープライズ領域での活用
コンシューマIDのエンタープライズ領域での活用
 
大学等におけるAzure AD B2Cを使用したSNS認証の活用
大学等におけるAzure AD B2Cを使用したSNS認証の活用大学等におけるAzure AD B2Cを使用したSNS認証の活用
大学等におけるAzure AD B2Cを使用したSNS認証の活用
 
Azure AD B2C + LINE 学校や企業における次世代 ID/ メッセージ基盤
Azure AD B2C + LINE 学校や企業における次世代 ID/ メッセージ基盤Azure AD B2C + LINE 学校や企業における次世代 ID/ メッセージ基盤
Azure AD B2C + LINE 学校や企業における次世代 ID/ メッセージ基盤
 
Azure ADとLINE連携により実現する学校や企業における次世代ID/メッセージ基盤
Azure ADとLINE連携により実現する学校や企業における次世代ID/メッセージ基盤Azure ADとLINE連携により実現する学校や企業における次世代ID/メッセージ基盤
Azure ADとLINE連携により実現する学校や企業における次世代ID/メッセージ基盤
 
認証/メッセージング領域へのモバイル/ソーシャルネットワークIDの活用
認証/メッセージング領域へのモバイル/ソーシャルネットワークIDの活用認証/メッセージング領域へのモバイル/ソーシャルネットワークIDの活用
認証/メッセージング領域へのモバイル/ソーシャルネットワークIDの活用
 
大学等におけるAzure AD B2Cを使用したSNS認証の活用
大学等におけるAzure AD B2Cを使用したSNS認証の活用大学等におけるAzure AD B2Cを使用したSNS認証の活用
大学等におけるAzure AD B2Cを使用したSNS認証の活用
 
アイデンティティ API とデータ統合プラットフォームの活用
アイデンティティ API とデータ統合プラットフォームの活用アイデンティティ API とデータ統合プラットフォームの活用
アイデンティティ API とデータ統合プラットフォームの活用
 
Office365のID基盤活用とセキュリティ上の注意点
Office365のID基盤活用とセキュリティ上の注意点Office365のID基盤活用とセキュリティ上の注意点
Office365のID基盤活用とセキュリティ上の注意点
 

実装して理解するLINE LoginとOpenID Connect入門

  • 1. 実装して理解する LINE Login と OpenID Connect 入門 Naohiro Fujie 2019/03/15
  • 2. 自己紹介 • 役割 • 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
  • 3. Agenda • OpenID Connectとは • OpenID Connectとは • OAuth2.0とは • 認証/ID連携(OAuth認証)の誤用理由 • 認証/ID連携に使うには? • OAuthとOpenID Connectの違いの例 • 具体的なフロー • id_token • LINE LoginとOpenID Connect • LINE LoginとOpenID Connect • LINE Login(v2.1)の特徴(クセ) • その他のトピックス • 実習 Copyright Naohiro Fujie, 2019 3
  • 4. 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, 2019 4
  • 5. 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, 2019 5
  • 6. • サードパーティアプリケーション:OAuthクライアント • HTTPサービス:リソースサーバ • 限定的なアクセス:スコープ • 可能にする(サービス):認可サーバ Copyright Naohiro Fujie, 2019 6 OAuthクライアント (Webアプリ、スマホアプリなど) リソースサーバ (API、サービス) 認可サーバ (OAuthサーバ) 利用者 (リソースオーナー) スコープに基づき許可 (認可) 認可に基づき アクセストークンを発行 アクセストークンを 提示してアクセス リソースを所有
  • 7. 典型的な使われ方 • カレンダーアプリとGoogle Calendarの連携 Copyright Naohiro Fujie, 2019 7 カレンダーアプリ Google Calendar API Google Account 利用者 (リソースオーナー) カレンダーアプリに対して アイテムの読み出しを許可 認可に基づき アクセストークンを発行 アクセストークンを 提示してアクセス リソースを所有
  • 8. 認証/ID連携(OAuth認証)の誤用理由① • アクセス許可を行う前にログインする為、アクセストークンを 認証の結果得られたものとして扱ってしまう Copyright Naohiro Fujie, 2019 8 カレンダーアプリ Google Calendar API Google Account 利用者 (リソースオーナー) カレンダーアプリに対して アイテムの読み出しを許可 認可に基づき アクセストークンを発行 アクセストークンを 提示してアクセス リソースを所有 ログイン(認証)
  • 9. 認証/ID連携(OAuth認証)の誤用理由② • 殆どのサービスがプロファイル取得APIを用意しており、アク セストークンでID情報の取得が可能。アクセストークンの持ち 主=リソースオーナーとみなしてしまう Copyright Naohiro Fujie, 2019 9 カレンダーアプリ Google Account API Google Account 利用者 (リソースオーナー) カレンダーアプリに対して アイテムの読み出しを許可 認可に基づき アクセストークンを発行 アクセストークンを 提示してアクセス リソースを所有 ID情報の取得が可能
  • 10. よく考えると • アクセストークンは無記名式の切符(誰が持ってきてもOK) • 認可サーバはアクセストークンの有効性検証は出来るが、持参人=発行者 かどうかは検証できない • 何故なら、 • 基本的にアクセストークンは単なる文字列(ハンドルトークン) • ※最近はJWT形式のAssertion Tokenもありますがややこしくなるので割愛 • 認可サーバには以下のように保存されている(イメージ) • Authorization HeaderにBearer xxxx(トークン)って書きますよね? • Bearer(ベアラ)=持参人。持ってきた人に利用を許可する、ということ • 参考)https://idmlab.eidentity.jp/2013/09/bearer-token.html Copyright Naohiro Fujie, 2019 10 アクセストークン 発行者 有効期限 スコープ 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
  • 11. 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, 2019 11 認証/ID連携は仕様のスコープ外
  • 12. 認証/ID連携に使うには? • OAuthクライアントがリソースサーバ側のユーザ情報を取得でき ること • 認証された結果を把握できること • リソースオーナーのID情報を把握できること • OpenID Connectにおける実現方法=アイデンティティレイヤー • ID Token : 認証結果(アサーション)の取得方法の標準化 • UserInfoエンドポイント : ID情報の取得方法の標準化 ※ID TokenにもID情報を含められるがトークンのサイズの巨大化の問題や認証時以外の情報取得に対 応するためUserInfoを使用 Copyright Naohiro Fujie, 2019 12
  • 13. 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, 2019 13 アイデンティティレイヤー = ID Token、UserInfoエンドポイント
  • 14. 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, 2019 14 キモは「scope=openid」と「id_token」と「userInfoエンドポイント」
  • 15. 具体的なフロー (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, 2019 15
  • 16. 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, 2019 16
  • 17. id_tokenの中身 • jwt.io(by Auth0)とかjwt.ms(by MS) Copyright Naohiro Fujie, 2019 17
  • 18. 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@eidentity.jp メールアドレス Copyright Naohiro Fujie, 2019 18
  • 19. LINE LoginとOpenID Connect • 2017年9月 • LINE Login v2.1でOpenID Connectに対応(v2.0まではOAuth2.0) • 2018年3月 • eメールアドレス属性の提供(id_token)に対応 • 2018年6月 • OpenID Certificationにより認定(Basic OP) • https://openid.net/certification/ • 2019年2月 • ブラウザシナリオでのQRコードログインに対応 Copyright Naohiro Fujie, 2019 19
  • 20. LINE Login(v2.1)の特徴(クセ) • OpenID Provider Configuration Documentから探る • https://access.line.me/.well-known/openid-configuration Copyright Naohiro Fujie, 2019 20 { "issuer": "https://access.line.me", "authorization_endpoint": "https://access.line.me/oauth2/v2.1/authorize", "token_endpoint": "https://api.line.me/oauth2/v2.1/token", "jwks_uri": "https://api.line.me/oauth2/v2.1/certs", "response_types_supported": [ "code" ], "subject_types_supported": [ "pairwise" ], "id_token_signing_alg_values_supported": [ "ES256" ] }
  • 21. LINE Login(v2.1)の特徴(クセ) パラメータ 値 説明 response_types_supported code Code flowのみサポート subject_types_supported pairwise 同一ユーザでもアプリケーション毎にユニークな subが発行される LINEの場合はアプリ単位というよりプロバイダ単 位なんですが・・・ id_token_signing_alg_values_s upported ES256 ES256(ECDSA using P-256 curve and SHA-256 hash)をサポートとありますが、id_tokenのヘッ ダを見ると、HS256・・・ スペック上はRS256は必須で含まれないとダメな はずなんですが・・・ token_endpoint_auth_methods _supported なし tokenエンドポイントのクライアント認証の方法の 指定がない(OPTIONALなので間違いではない) ので、ドキュメントを見るとclient_secret_post (client_idとclient_secretをPOSTする)が使われ ている。が、実際はclient_secret_basic(BASIC認 証)でも動く Copyright Naohiro Fujie, 2019 21
  • 22. LINE Login(v2.1)の特徴(クセ) • メールアドレスの取得 • scopeとして指定できるのは、 • openid, email, profileの3種類 • emailを指定しても、あらかじめ許可 設定をしておかないとダメ • Emailはprofileではなくid_tokenのみ に含まれる • そして、tokenレスポンス内のscope にはemailは出てこない(指定していても) Copyright Naohiro Fujie, 2019 22
  • 23. LINE Login(v2.1)の特徴(クセ) • その他特殊パラメータ • bot_prompt(ボットの友だち追加の方法) • Normal: 同意画面の中でボットと友達になるチェックを入れる • Aggressive: 別画面でボットと友達になる Copyright Naohiro Fujie, 2019 23 Normal Aggressive
  • 24. LINE Login(v2.1)の特徴(クセ) Copyright Naohiro Fujie, 2019 24 クライアント 自動ログイン *1 メールアドレス+ パスワード QRコード 電話番号 *2 モバイル (標準ブラウザ) ○ モバイル (標準外ブラウザ) ○ PCブラウザ ○ ○ PC版アプリ ○ ○ ○ *1. 自動ログインの動作条件:https://developers.line.biz/ja/faq/#-2017-11-08 *2. 電話番号ログインの条件:PC版LINEでユーザ登録をした場合のみ
  • 28. 実習 • 以下に手順とコードを置いてあります • https://github.com/fujie/line_login • 各自手順に従い作業を進めてください • 不明点はスタッフへお問い合わせください Copyright Naohiro Fujie, 2019 28