8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

memo DevSumi2015【19-C-5】 OpenID ConnectとAndroidアプリのログインサイクル

Posted at

概要

GoogleやFacebook、Yahoo! JAPANの提供するOAuth、OpenID Connectのシングルサインオン(SSO)を利用する上でトークン、ログイン状態の管理が必要になります。ログイン、ログアウトに加えアプリによってはマルチアカウント利用やアカウント切り替えを必要とするケースもあります。スマフォアプリではネイティブ、WebViewでSSOの認証方法が異なり、実装パターンは多岐にわたります。これまでID連携の設計や実装サポートしてきたナレッジをもとに、AndroidアプリにおけるSSOからログイン状態の管理まで、アプリの要件にあった実装方法をご紹介します。

自己紹介

@kura_lab
OpenID Foundation Japan
ID厨

ネィティブアプリではセッション管理が大変

ID連携実装パターン

異なる組織間でユーザーのiDデータを連携し、サービスの向上をめざすもの

OpenID Connect

知っておきたい7つのID連携パターン
http://techblog.yahoo.co.jp/web/auth/id_federation_impl_patterns/

WebApp スタンダードなパターン

WebApp server Request-> Server (Redirect処理)

  1. Request
  2. 認証
  3. ID Token
  4. Login処理

Native スタンダードなパターン

Native Browser

  1. Request
  2. 認証
  3. ID Token
  4. Login処理、AppにToken保存

Native, WebView Hybrid

Native, Browser(Yahoo)

  1. Request
  2. 認証
  3. <- ID Token (Custom URI)
  4. Login処理 Token 保存
  5. Server Login 処理Webiew経由で Cookie発行、サーバーにトークンを保存

OpenID Connect Tokenの種類

  • Access Token
  • Referesh Token
  • ID Token

ふたつのトークンの物語
http://blog.openid.or.jp/post/12874061176/openid-connect-tale-of-two-tokens

-> Token, Cookieによるセッション管理が大変

ログインサイクルで大事なこと

ライフサイクル
Invalid file type: image/bmp

ログイン時には

  • Cookie有効
  • AccessToken有効
  • RefereshToken有効
  • IDToken 有効

ログアウト時, Cookie 有効期限切れは

  • Cookie無効
  • AccessToken有効? 無効?
  • RefereshToken有効 無効?
  • IDToken 有効?

Token有効期限切れは

  • Cookie無効?
  • AccessToken 無効
  • RefereshToken 無効
  • IDToken 有効?

ID Tokenとは?

詳しくは
http://www.slideshare.net/kura_lab/devsumi201413c5

FaceBookが、Slideshareのために、kuraを認証したかを示すToken
発行時に検証して、IDTokenは保持しなくてもよい

ID Tokenの内容
iss:(issure)
sub:
aud: (audience)
exp: (有効期限)

IDTokenの有効期限は、IDPがきめるもの。
WebViewに発行するCookieの有効期限はアプリのポリシーで決めてよい

TokenはCookieの有効無効にあわせるとよいよ!

Cookie -> 無効,AccessToken, RefereshToken無効化
BackendをAPI を Callしたい場合は無効にしなくてもよい
ID Tokenは保持しなくてよい

Tokenの有効期限切れは、再発行。

アカウント切り替え時は?

アカウント無効化すると再発行が大変なためバックエンドで保持するのがよいだろう

  • Cookie 別アカウント発行
  • AccessToken 保持
  • RefereshToken 持無
  • IDToken 保持しない。

Androidはブラウザー経由でOpenID Connect

WebViewではなく、ブラウザーを推奨する理由

IDpのログインセッションを共有できる!

認証サービスを使用しているAppなら、共有できる

SSL通信、ドメインを見てフィッシングか確認できる

WebViewの場合、SSL ドメインを確認できない

iOS App で やろうとすると

UX を理由にAppStoreの審査でリジェクトされることもある!

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?