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
CredentialManager移行の落とし穴
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ゆつぼ
October 14, 2024
Technology
0
1.4k
CredentialManager移行の落とし穴
ゆつぼ
October 14, 2024
Tweet
Share
More Decks by ゆつぼ
See All by ゆつぼ
Glance 3分クッキング
morayl
0
110
安全にNavigateしよう
morayl
0
540
DAI語で行こう #as_tips / daigo_as_tips
morayl
1
510
Other Decks in Technology
See All in Technology
いよいよ仕事を奪われそうな波が来たぜ
kazzpapa3
3
350
AIとともに歩む情報セキュリティ / Information Security with AI
kanny
4
3.1k
セキュリティについて学ぶ会 / 2026 01 25 Takamatsu WordPress Meetup
rocketmartue
1
260
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
130
入社1ヶ月でデータパイプライン講座を作った話
waiwai2111
1
210
Data Hubグループ 紹介資料
sansan33
PRO
0
2.7k
Kubecon NA 2025: DRA 関連の Recap と社内 GPU 基盤での課題
kevin_namba
0
110
ゼロから始めたFindy初のモバイルアプリ開発
grandbig
2
630
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
150
Meshy Proプラン課金した
henjin0
0
180
しろおびセキュリティへ ようこそ
log0417
0
250
MySQLのJSON機能の活用術
ikomachi226
0
130
Featured
See All Featured
Music & Morning Musume
bryan
47
7.1k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
54
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
69
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
630
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
53
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
93
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
Side Projects
sachag
455
43k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
580
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
130
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