Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ソフトバンクにおけるID連携実装について
Search
takayuki komatsu
March 30, 2018
Technology
5
2.3k
ソフトバンクにおけるID連携実装について
2018/03/23 OpenID TechNight Vol.15での講演資料です
takayuki komatsu
March 30, 2018
Tweet
Share
Other Decks in Technology
See All in Technology
軽量DDDはもういらない! スタイルガイド本で OOPの実装パターンを学ぼう
panda_program
29
11k
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
130
2024年グライダー曲技世界選手権参加報告/2024 WGAC report
jscseminar
0
210
LINEヤフー株式会社における音声言語情報処理AI研究開発@SP/SLP研究会 2024.10.22
lycorptech_jp
PRO
2
280
Intuneお役立ちツールのご紹介
sukank
3
750
[FOSS4G 2024 Japan LT] LLMを使ってGISデータ解析を自動化したい!
nssv
1
180
徹底比較!HA Kubernetes ClusterにおけるControl Plane LoadBalancerの選択肢
logica0419
2
140
ドメイン名の終活について - JPAAWG 7th -
mikit
31
18k
What to do after `laravel new`
mattstauffer
0
140
福岡新卒エンジニアの会
teba_eleven
1
190
Windows Autopilot Deployment by OSD Guy
tamaiyutaro
0
310
元旅行会社の情シス部員が教えるおすすめなre:Inventへの行き方 / What is the most efficient way to re:Invent
naospon
2
280
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
Rails Girls Zürich Keynote
gr2m
93
13k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
27
2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
The Cost Of JavaScript in 2023
addyosmani
45
6.7k
Navigating Team Friction
lara
183
14k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Transcript
1 ソフトバンクにおけるID連携実装について ソフトバンク株式会社 小松 隆行 OpenID Tech Night vol.15 2018年3月23日
2 はじめに ソフトバンクの実装の話しかしません 役に立たないかもしれません? これまで私が悩んできたことを紹介することにも意味があるかと 文字が、多目です
OpenID Tech Night vol.15
3 本日話すこと ▼今更ですが、改めてID連携の価値について ▼ソフトバンクで行っているユニークな認証による事例ご紹介 OpenID Tech Night vol.15
4 自己紹介 小松 隆行 @komatak ソフトバンク株式会社 2005 ~
2018 現在 新卒入社、配属部署は所謂「情シス」。現在もその流れの部署に所属 OpenID Foundation Japan 所属会員 2008 ~ 2018 現在 現在はエンタープライズID(社員ID)活用のワーキンググループに所属 ソフトバンクモバイル事業 の ID連携/API認可基盤開発 2010 ~ 2018 現在 OpenID2.0, OAuth1.0a, OAuth2.0+OpenID Connect のIdPを実装 開発リーダー 通信キャリアのシステム担当といっても、単なるWeb系エンジニア OpenID Tech Night vol.15
5 MySoftBank (会員向けWebサイト) ソフトバンクまとめて支払い (決済サービス) 自社契約ユーザー向けネイティブアプリ サービス導入例 その他、 SNSサイト向け年齢認証、 LINEアカウントとの連携、提携会社向けの認証
サービスなどなど OpenID Tech Night vol.15
6 今更ですが、改めてID連携の価値について OpenID Tech Night vol.15
7 ID連携/API認可基盤がない世界 自社IDを持つ事業者にID連携/API認可基盤が存在しないと・・・ 当然、認証/認可機能を各サービスが自前で実装することに → 実装にバラつきがでて、知らぬ間にどこかでセキュリティホールが出来ている恐れ 統一的な認証LV(どの認証でどの機能を利用させてよいか)の管理がしづらい
新しい認証技術が発明されても、導入が個々の実装になってしまう そこそこ規模以上のID配布事業者はID連携で 自社サービスを繋げた方が良さそう OpenID Tech Night vol.15
8 ID連携/API認可基盤がない世界 ソフトバンクでは、 統一的な認証LV(どの認証でどの機能を利用させてよいか)の管理がしづらい → 社内で「サービス毎に必要な認証LV」を定義し、ID連携基盤でユーザの認証状態 を元に必要な(かつ、適切な)認証・認可を実施してRPに返却する基盤になっている
新しい認証技術が発明されても、導入が個々の実装になってしまう → 後ほど紹介する「回線認証」「指紋認証」、ほかにもSMSを利用した認証実装や、 セキュリティ観点でも強化ポイントをID連携基盤に集約してメリットを出している OpenID Tech Night vol.15
9 もう少し具体的に サービス毎に必要認証LVを定義 (社内LoA) ID連携基盤ではユーザ認証状態から必要な認証を実施 (所持認証) +回線認証 or OTP via
SMS (記憶認証) +契約者暗証番号 レベル 2 レベル 3 該当サービス: ・A機能(クレデンシャルの変更など) ・B機能(契約書類の閲覧など) 該当サービス: ・C機能(個人情報の閲覧など) ・D機能(有料サービスの申込など) 該当サービス: ・MySoftBankサイトへのログイン ・契約済みサービス・アプリの利用 レベル 4 該当サービス:現状なし (所持認証) 回線認証 or OTP via SMS (記憶認証) +パスワード認証 (記憶認証) パスワード認証 or Y! ID連携の利用 レベル 1 (参考:NIST SP800-63-rev2) (rev3 ベースではない) OpenID Tech Night vol.15
10 Source:NIST SP800-63-3翻訳版63-Bパートの紹介 https://www.slideshare.net/kthrtty/20171027-nist-sp80063bkthrtty-81333156 OpenID Tech Night vol.15
11 E/U ブラウザ AuthZ Endpoint Token Endpoint RP 認可要求リクエスト 必要なLoAチェック
LoA2を必要とするサービス利用 ユーザ同意処理 認可要求レスポンス (codeフロー) 認可コード確認 Access/Refresh/ IDトークン発行 ユーザ認証状態チェック OTP認証→成功 OTP入力画面表示 OTP入力 認証方式判定(LV1) PW入力画面表示 ID/PW入力 PW認証→成功 認証方式判定(LV2) SMSでOTP送信 認可画面表示 同意入力 サービス提供 OIDC Authtication Request もう少し技術的に OpenID Tech Night vol.15
12 E/U ブラウザ AuthZ Endpoint Token Endpoint RP 認可要求リクエスト 必要なLoAチェック
LoA2を必要とするサービス利用 ユーザ同意処理 認可要求レスポンス (codeフロー) 認可コード確認 Access/Refresh/ IDトークン発行 ユーザ認証状態チェック OTP認証→成功 OTP入力画面表示 OTP入力 認証方式判定(LV1) PW入力画面表示 ID/PW入力 PW認証→成功 認証方式判定(LV2) SMSでOTP送信 認可画面表示 同意入力 サービス提供 OIDC Authtication Request もう少し技術的に RPからのAuthN Reqの要求パラメータや、 ユーザのセッション状況(Cookie等)を用いて、 consent(同意)までに必要な認証を実施 OpenID Tech Night vol.15
13 E/U ブラウザ AuthZ Endpoint Token Endpoint RP 認可要求リクエスト 必要なLoAチェック
LoA2を必要とするサービス利用 ユーザ同意処理 認可要求レスポンス (codeフロー) 認可コード確認 Access/Refresh/ IDトークン発行 ユーザ認証状態チェック OTP認証→成功 OTP入力画面表示 OTP入力 認証方式判定(LV1) PW入力画面表示 ID/PW入力 PW認証→成功 認証方式判定(LV2) SMSでOTP送信 認可画面表示 同意入力 サービス提供 OIDC Authtication Request もう少し技術的に LoA1ではPW認証 LoA2ではOTP認証 via SMS を実施している例 OpenID Tech Night vol.15
14 ブラウザで実際に確認 ▼ LoA1 (データ量確認) https://my.softbank.jp/msb/d/webLink/doSend/MSB020043 https://id.my.softbank.jp/sbid_auth/type1/2.0/authorization.php? response_type=code& client_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx& redirect_uri=https%3A%2F%2Fmy.softbank.jp%2Fmsb%2Fd%2Fauth%2FdoReceiveSbid&
prompt=login%20consent& scope=openid& nonce=20180322144227678p0N21IdTRDAQVbv& ui_locales=ja& acr_value=1& amr=me ▼LoA2 (セキュリティ設定) https://my.softbank.jp/msb/d/webLink/doSend/CAS010011 https://id.my.softbank.jp/sbid_auth/type1/2.0/authorization.php? response_type=code& client_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx& redirect_uri=https%3A%2F%2Fmy.softbank.jp%2Fmsb%2Fd%2Fauth%2FdoReceiveSbid& prompt=login%20consent& scope=openid& nonce=20180322144328203qrOt4YmPWkyUn1c& ui_locales=ja& acr_value=2& amr=me OpenID Tech Night vol.15
15 本日話すこと ▼今更ですが、改めてID連携の価値について ▼ソフトバンクで行っているユニークな認証による事例ご紹介 OpenID Tech Night vol.15
16 Source: OpenID Connect Core 1.0 日本語訳 http://openid-foundation-japan.github.io/openid-connect-core-1_0.ja.html#Overview OpenID Tech
Night vol.15 ここからはOIDCの中でも認証の話です
17 https://www.softbank.jp/mobile/service/smart-login/ OpenID Tech Night vol.15
18 ご存知の方? OpenID Tech Night vol.15
19 そもそも ソフトバンク回線を ご利用の方? OpenID Tech Night vol.15
20 スマートログイン? Yahoo!Japan IDとソフトバンク スマホ回線を紐付けるサービス ソフトバンク回線でYahoo!サイトを開くと裏でSB側の回線認証 紐付けられたY!IDが通知され、Y!側が受け入れ自動ログインに
連携済みのY!IDは自動的にY!プレミアム会員となるためお得 2015年10月サービス開始。現在なんとほぼ、1000万ユーザ! OpenID Tech Night vol.15
21 回線認証? 覚えていますか フューチャーフォンの 「かんたんログイン」 通信キャリアのゲートウェイがインターネットに出る際に、HTTPヘッダに付与する 端末固有IDをWebサイト側がユーザ識別子として受け入れていた実装
ここでいう 回線認証 ≠ かんたんログイン そのものではないですが、感覚的に はソフトバンクSIMが刺さっている端末からの通信を、キャリア網内サーバ(非イ ンターネット)に接続させることで取得できる情報から、通信元を一意に識別す る機能があると思っていただければ これを OpenID Connectの「認証」としてつなげる OpenID Tech Night vol.15
22 E/U ブラウザ AuthZ Endpoint Token Endpoint Yahoo! Japan 認可要求リクエスト
必要なLoAチェック Yahooにアクセス(この例はWeb) ユーザ同意処理(省略) 認可要求レスポンス (codeフロー) 認可コード確認 Access/Refresh/ IDトークン発行 ユーザ認証状態チェック 認証=回線認証実施可 紐づいているY!ID情報を 受け入れサービス提供 OIDC Authtication Request スマートログイン(設定済み)フロー キャリア網内 認証サーバ 接続端末 を特定 キャリア網内サーバに接続 バックチャネルで端末情報を受信 戻しリダイレクト ユーザとのインタラクションなしに スマホが携帯回線で通信している だけで自動的に認証が行われる OpenID Tech Night vol.15
23 デモ OpenID Tech Night vol.15
24 https://www.softbank.jp/mobile/service/mysoftbank-plus/ OpenID Tech Night vol.15
25 ご存知の方? OpenID Tech Night vol.15
26 MySoftBankプラス(+) ネイティブアプリで請求料金・データ残量が確認できるアプリ 元々はPW認証または、回線認証でログイン可能なアプリでした アプリ自体は数年前より存在、直近「指紋認証」機能が搭載された iOS版は2/1日よりアプデ配信開始
Android版は先日アップデート配信されたが 「諸般の事情」 により公開さし止め 現在は再公開していますので、試してみてください! OpenID Tech Night vol.15
27 指紋認証? アレです、UAF的なアレ 端末側の検証結果(署名)をサーバ側で検証して、事前に紐付けている事業者側の IDとの紐付け確認をもって認証完了とする これを OpenID
Connectの「認証」としてつなげる OIDCの「認証フェーズ」に入ったところでUAF的なシーケンスが始まる UAF的なシーケンスが終わったところでOIDCの認証に戻すことになるが、何をもって UAFで認証された、と認可サーバ側が受け取るかが悩んだ末の実装になっている OIDCシーケンスなので最初はWebなのに、UAF的な処理はアプリネイティブ、完了を 受けて再度WebのOIDCに戻すのが厄介でした OpenID Tech Night vol.15
28 Server App E/U ブラウザ webview AuthZ Endpoint Token Endpoint
RP アプリ本体 マイソプラス 指紋認証フロー(登録) UAF的な クライアント UAF的な Endpoint 認可要求リクエスト ID/PW入力 UAF.inirire.Reg(AccessToken) 生体情報登録 PW入力画面表示 PW認証→成功 認可レスポンス(AccessToken) OIDC Authtication Request 登録依頼 Registration URL Req UAF.Registration.Request 指紋グリグリ ローカル指紋認証OK UAF.Regsitation.Response Registration.Result 登録完了 Done 登録前に、いわゆる 「レガシー認証」を実施 AccessToken発行 Tokenに紐づくIDと 紐付け OpenID Tech Night vol.15
29 マイソプラス 指紋認証フロー(認証) 認可要求リクエスト 指紋認証開始レスポンス 指紋認証開始 Initiate Authreq ローカルで検証 (OSのAPI経由)
指紋認証 UAF.Auth.Request UAF.Auth.Response 署名検証 紐づくID を確認 Auth result OIDC復帰処理 ユーザ同意処理 同意入力 OIDC Authtication Request Server App E/U ブラウザ webview AuthZ Endpoint Token Endpoint RP アプリ本体 UAF的な クライアント UAF的な Endpoint 本アプリではここでいきなり WebViewが立ち上がる (ここでAuth Resultの引き 継ぎを実施している) ベアラ判定 OpenID Tech Night vol.15
30 デモ OpenID Tech Night vol.15
31 認証の「優先順位」問題 MySoftbankプラスアプリが認証を利用する優先順位 1. (SB回線を掴んでいる場合)回線認証 2. (SB回線を掴んでいない)指紋認証 3. PW認証
OpenID Tech Night vol.15
32 まとめ ▼ID連携は自社サービス間の適用においても非常に有効 ▼OpenID Connect仕様自体には認証方式自体の定めがないため 今回ご紹介したような様々な認証をプラグインすることができる ▼ソフトバンクでは共通認証基盤上に複数の認証手段を準備し、 OpenID Conncetを通じて様々なサービス連携を行っている OpenID
Tech Night vol.15
33 ご清聴 ありがとう ございました OpenID Tech Night vol.15