2015/02/19 デブサミ2015 【19-C-5】OpenID ConnectとAndroidアプリのログインサイクル #devsumiC

Developers Summit 2015 Growth! http://event.shoeisha.jp/devsumi/20150219/session/654/ <講演概要> GoogleやFacebook、Yahoo! JAPANの提供するOAuth、OpenID Connectのシングルサインオン(SSO)を利用する上でトークン、ログイン状態の管理が必要になります。ログイン、ログアウトに加えアプリによってはマルチアカウント利用やアカウント切り替えを必要とするケースもあります。スマフォアプリではネイティブ、WebViewでSSOの認証方法が異なり、実装パターンは多岐にわたります。これまでID連携の設計や実装サポートしてきたナレッジをもとに、AndroidアプリにおけるSSOからログイン状態の管理まで、アプリの要件にあった実装方法をご紹介します。 続きを読む
2
Tatsuo Kudo @tkudos

#devsumiC @kura_lab: オフラインで書き込みしたいときとかは、Cookieとトークンを同期させなくてもよいけど

2015-02-19 15:37:35
キハ( ˘ ³˘)♥58系 @bump_of_kiharu

トークンはCookieの有効/無効にあわせるのがポイント ログアウト時: Cookieを無効にしたら、アクセストークン、リフレッシュトークンも無効 ただしバックエンドでAPIを叩く等の処理があるなら、アクセストークン・リフレッシュトークンは無効化しない #devsumiC

2015-02-19 15:37:47
nov matake @nov

きになる人は、scope=offline_access とか調べてみるといいですね。 #devsumi #devsumiC

2015-02-19 15:38:19
Tatsuo Kudo @tkudos

#devsumiC @kura_lab: トークンの有効期限切れの場合。WebViewにセットされているCookieが有効であれば、トークン再発行して有効にすると、自然な振る舞いになると思う

2015-02-19 15:38:25
Tatsuo Kudo @tkudos

#devsumiC @kura_lab: アカウント切り替えの場合。いま入っているIDと別のIDで入りたい。トークンは無効化せずに、バックエンドでアカウント単位でトークンを保持したほうが良いと思う。Cookieは別アカウントで発行

2015-02-19 15:40:03
Tatsuo Kudo @tkudos

#devsumiC @kura_lab: なぜ今回、ブラウザを使うような紹介をしているか。それはできるだけブラウザを使ってほしいから

2015-02-19 15:41:08
tt @tora470

アプリでもログイン、ブラウザでもログインってなるのめんどくさいんだよな #devsumi #devsumic

2015-02-19 15:42:39
マイペンライ @golden_eggg

webviewじゃなくてブラウザを推奨する理由=IdPのログインセッションを共有出来る #devsumiC

2015-02-19 15:42:41
Tatsuo Kudo @tkudos

#devsumiC @kura_lab: 推奨する理由その1: IdPのログインセッションを共有できる。これがいちばん大きい。Y!地図のログインフロー、メニュー開く→ログイン押下→WebViewではなくブラウザが起動してログイン

2015-02-19 15:43:17
Tatsuo Kudo @tkudos

#devsumiC @kura_lab: Y!地図アプリ、ショッピングアプリ、いずれも必ずブラウザが立ち上がるようになっている。アプリ間でログイン状態を共有できるようになっている。Y!以外の他社アプリでも、ブラウザのログイン状態を引き継げる。WebViewだとできない

2015-02-19 15:44:20
キハ( ˘ ³˘)♥58系 @bump_of_kiharu

WebViewを使ったアプリだとセッションが共有出来ないけど、ブラウザだったら共有出来るので、一旦ブラウザを経由してログイン状態を引き継いで自アプリに接続すると良い、とのこと。 これはAndroidだけ?(聞き逃した) #devsumiC

2015-02-19 15:45:40
マイペンライ @golden_eggg

webviewだとhttpsになってるかとかドメインは正しいか、という事をユーザーが確認できない #devsumiC

2015-02-19 15:47:38
Tatsuo Kudo @tkudos

#devsumiC @kura_lab: ブラウザ推奨理由2: SSL通信、ドメインを見て、フィッシングでないことを確認できる。最近のChromeだと証明書の内容確認はできなくなってるけど、ドメインを見れば確認できる

2015-02-19 15:47:48
minamo @minamo173

ネイティブでのログイン画面はURLが表示されないので、ドメイン、暗号化通信など不安がある #devsumiC

2015-02-19 15:47:54
Hiroya Kato @hiroya1222

たしかにWebViewだと、URLも見えないし、暗号化通信されているか確認できないから、一抹の不安がある。#devsumiC

2015-02-19 15:48:10
Tatsuo Kudo @tkudos

#devsumiC @kura_lab: AndroidでID連携を実装する際にはWebViewじゃなくてブラウザを使っていただきたい

2015-02-19 15:48:32
minamo @minamo173

WebViewでのログインはフィッシングを助長する恐れがある #devsumiC

2015-02-19 15:48:45
nov matake @nov

Appleが外部ブラウザ開くアプリをUXいけてないからとrejectするというリスクについて #devsumi #devsumiC

2015-02-19 15:49:18
Tatsuo Kudo @tkudos

#devsumiC @kura_lab: iOSで、ブラウザを立ち上げるようにするとApp Storeの審査で却下されることもある、UX的な意味で。AndroidはAppleほど審査厳しくない、リジェクト可能性低い

2015-02-19 15:49:33
nov matake @nov

「Androidだとrejectされる可能性は低い」#devsumi #devsumiC

2015-02-19 15:49:37
tt @tora470

iOSアプリはブラウザ経由のセッション共有方式にするとリジェクトされやすい #devsumi #devsumic

2015-02-19 15:49:49
キハ( ˘ ³˘)♥58系 @bump_of_kiharu

iOSアプリでブラウザを経由してアプリを起動させようとすると、UXを理由にAppStoreの審査でリジェクトされる可能性がある(ブラウザとアプリを行ったり来たりするのはUI/UX的によろしくないとの理由)。Androidではその心配は不要。 #devsumiC

2015-02-19 15:50:06
Tatsuo Kudo @tkudos

#devsumiC @kura_lab: OpenID ConnectとAndroidアプリは相性が良い

2015-02-19 15:50:07
nov matake @nov

いや、むしろGoogleはAppleに対して圧力かけてますからね。外部ブラウザ開くのを推奨しろと。 #devsumi #devsumiC

2015-02-19 15:50:10
minamo @minamo173

Appleの審査で、アプリ→ブラウザ→アプリ、と遷移するアプリはUX的にイケてないと判断されてAppleからリジェクトされるらしい #devsumiC

2015-02-19 15:50:47