Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
CredentialManager移行の落とし穴
Search
ゆつぼ
October 14, 2024
Technology
1.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CredentialManager移行の落とし穴
ゆつぼ
October 14, 2024
More Decks by ゆつぼ
See All by ゆつぼ
Glance 3分クッキング
morayl
0
150
安全にNavigateしよう
morayl
0
570
DAI語で行こう #as_tips / daigo_as_tips
morayl
1
540
Other Decks in Technology
See All in Technology
AIとペアプロを始める。人とのペアプロをやめる。ペアプロの良さを改めて知る。もっと好きになった。 / Rediscovering Pair Programming
honyanya
1
310
Webとヘルスデータ
yukukotani
1
200
AIで仕事のやり方を変える
matsu7874
3
1k
V8コントリビュート超入門
riyaamemiya
0
160
Driving AI Adoption Using In-House GPUs to Serve Qwen
po3rin
2
470
Tab5をRubyで動くパソコンにする
kishima
2
280
2026-09-04 SRE Tech Talk #15 怠惰なTerraform / Lazy Terraform
masasuzu
0
230
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
0
1.2k
Bet AI Day 2026丨Agentは、「金融」という巨大産業の何を変えられるのか
layerx
PRO
0
1.2k
生成AIのテナント制御とシャドーMCP対策 | AIを"止めずに"、情報を守る
yukun
0
140
AI時代におけるプロダクト横断勉強会の設計
zozotech
PRO
0
170
AIオーケストレーションを活用した 開発ワークフローの設計と実践
bqnq
0
120
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
520
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
970
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Optimising Largest Contentful Paint
csswizardry
37
3.9k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
520
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
520
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
510
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
600
Transcript
CredentialManager移行の 落とし穴 ゆつぼ(@morayl1) 1
ゆつぼ 株式会社リクルート スタディサプリのAndroidエンジニア うつぼです。かわいい! 2 morayl morayl1
はじめに • ID/パスワードの入力補助のお話 • Smart Lock for Passwordsからの移行 • 環境依存が強いので、結果が異なる場合があるかも
3
Smart Lock for PasswordsとCredentialManager • Smart Lock for Passwords(CredentialsApi) ◦
ID/Passwordの保存・読み出しを中継するライブラリ ◦ gms:play-services-authに入っていたが、2022年にdeprecatedになった ◦ gms:play-services-auth:21.0.0から削除されている(21.2.0が最新) • それに変わるのがCredentialManager ◦ Passwordだけでなく、GoogleSignIn・Passkeyにも対応できる • ライブラリが変わるので、移行にはコードの書き換えが必要 4
CredentialManagerへの移行 公式にマイグレーションガイドがある https://developer.android.com/identity/sign-in/smart-lock-migration 5
パスワードの保存 6
パスワードの読み出し 7
パスワードの読み出し 8
パスワードの読み出し 9
落とし穴 10
正常パターン 11
12
13
14
15
異常パターン 16
17
18
19
20
21
事象と条件 事象:特定の条件でパスワード保存シートが2回表示される 発生条件:Android14以降で、入力UIにEditTextを使っている 22
23
24
25
分かったこと 勝手に出てくるもの + 自分が出しているもの、で 2つ出ている • EditTextでinputTypeがpassword系の場合に出る(OS14以降) ◦ 画面遷移(Activity/Fragment):保存UI ◦
EditTextへのフォーカス(autofill属性による):読み出しUI • OS14から、Autofillが強化されたことが原因 • Composeでは発生しない ◦ ComposeはまだAutofillに最適化されていないらしい ◦ そのうち最適化されそう • play-services-authでは発生しない 26
解決策 Compose化する パスワード入力ViewでEditTextを使わなければ解決する • EditTextだけComposeにする ◦ Abstract/ComposeViewを使うと出来る ◦ TextInputLayoutで囲んである場合は、難しいかも •
画面全体・Fragmentのレイアウトを全てComposeにする 27
「今、Compose化は出来ん」 28
xmlのまま解決する方法はないか? 1. 解決しない方法 2. ちょっと解決する方法 3. 解決ではない方法 4. 解決策? 5.
解決策 29
解決しない方法 xmlでAutofillの無効化する 30 inputTypeがpasswordだと表示されてしまう。 IssueTrackerで、仕様通りと回答されている。(以下、抜粋・翻訳) Android 14以降では、「自動入力の重要度」の挙動が更新されました。 Views#isImportantForAutofill が no
または noExcludeDescendants に設定されてい るビューでも、フォーカスされた際に通常は自動入力がトリガーされます。
解決ではない方法 play-services-authの21.0.0未満を使い続ける メリット • 問題が発生しない ◦ OS14でも、勝手に表示されない デメリット • deprecatedのままで、ライブラリアップデートも出来ない
31
ちょっと解決する方法 画面遷移前に、 AutofillManagerのcancelを呼ぶ。 メリット • 画面遷移後に出る(保存)のは防げる デメリット • EditTextタップ時に出てくるもの(読み出し)は防げない 32
解決策? OS14以降で、CredentialManagerのメソッドを呼ばない メリット • 問題は解決する デメリット • 読み出し・保存のタイミングが制御できない • 明示しないことには不安がある
◦ 内部仕様が変わると動作しなくなるかも・・・? 33
解決策 EditTextにisCredential=trueを付ける メリット • 問題が解決する デメリット? • 移行ガイドの手順通り進めると出てこない ◦ https://developer.android.com/identity/sign-in/smart-lock-migration
34
isCredentialとは何か Android 14以降では、isCredential属性を使用して、ユーザー名やパスワードなどの資格情報フィー ルドを示すことができます。この属性は、そのビューが Credential Managerやサードパーティの資格 情報プロバイダーと連携するための資格情報フィールドであることを示し、オートフィルサービスがよ り適切なオートフィル候補を提供できるように支援します。 アプリがCredential Manager
APIを使用する場合、利用可能な資格情報を表示する Credential Managerのボトムシートが表示されるため、ユーザー名やパスワード用のオートフィルのダイアログ を表示する必要はありません。同様に、アプリが Credential Manager APIを使用して資格情報を保 存するため、オートフィルのパスワード保存ダイアログも表示する必要がありません。 https://developer.android.com/identity/sign-in/credential-manager#indicate_credential_fields 35
isCredentialとは何か Android 14以降では、isCredential属性を使用して、ユーザー名やパスワードなどの資格情報フィー ルドを示すことができます。この属性は、そのビューがCredential Managerやサードパーティの資格 情報プロバイダーと連携するための資格情報フィールドであることを示し、 オートフィルサービスがよ り適切なオートフィル候補を提供できるように支援します 。 アプリがCredential
Manager APIを使用する場合、利用可能な資格情報を表示する Credential Managerのボトムシートが表示されるため、ユーザー名やパスワード用のオートフィルのダイアログ を表示する必要はありません。同様に、アプリが Credential Manager APIを使用して資格情報を保 存するため、オートフィルのパスワード保存ダイアログも表示する必要がありません。 36 「trueにすると勝手に出る」ようになりそう?
isCredentialとは何か Android 14以降では、isCredential属性を使用して、ユーザー名やパスワードなどの資格情報フィー ルドを示すことができます。この属性は、そのビューがCredential Managerやサードパーティの資格 情報プロバイダーと連携するための資格情報フィールドであることを示し、 オートフィルサービスがよ り適切なオートフィル候補を提供できるように支援します 。 アプリがCredential
Manager APIを使用する場合、利用可能な資格情報を表示する Credential Managerのボトムシートが表示されるため、ユーザー名やパスワード用のオートフィルのダイアログ を表示する必要はありません。同様に、アプリが Credential Manager APIを使用して資格情報を保 存するため、オートフィルのパスワード保存ダイアログも表示する必要がありません。 37 isCredentialを使わないと2回表示される(不適切になる) →trueにすると適切に表示できる
isCredentialとは何か Android 14以降では、isCredential属性を使用して、ユーザー名やパスワードなどの資格情報フィー ルドを示すことができます。この属性は、そのビューが Credential Managerやサードパーティの資格 情報プロバイダーと連携するための資格情報フィールドであることを示し、オートフィルサービスがよ り適切なオートフィル候補を提供できるように支援します。 アプリがCredential Manager
APIを使用する場合、利用可能な資格情報を表示する Credential Managerのボトムシートが表示されるため、ユーザー名やパスワード用のオートフィルのダイアログ を表示する必要はありません。同様に 、アプリがCredential Manager APIを使用して資格情報を保 存するため、オートフィルのパスワード保存ダイアログも表示する必要がありません 。 38 CredentialManager・オートフィルの2種類のダイアログがある → CredentialManagerを使うなら、オートフィルは不要 = trueにするとオートフィルのダイアログが表示されない
isCredentialの属性値を見てみる 「CredentialManagerと紐づいていることを示す」 = 「紐付いているから勝手に出さないでね 」 ComposeもAutofillに最適化された場合、isCredentialのような設定値が増えるのかもし れない 39
まとめ • CredentialManagerでは簡単にパスワードの読み出し・保存が出来る • Smart Lock for PasswordsをCredentialManagerに移行しようとしたら、 UIが重複表示される事象が発生した ◦
Android14以降でPassword入力のEditTextを使うことが条件 • 解決方法 ◦ EditTextにisCredential=trueを付ける ◦ Composeに移行する 40