View in English

  • メニューを開く メニューを閉じる
  • Apple Developer
検索
検索を終了
  • Apple Developer
  • ニュース
  • 見つける
  • デザイン
  • 開発
  • 配信
  • サポート
  • アカウント
次の内容に検索結果を絞り込む

クイックリンク

5 クイックリンク

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • トピック
  • すべてのビデオ
  • 利用方法

WWDC25に戻る

  • 概要
  • Summary
  • トランスクリプト
  • コード
  • パスキーの新機能

    iOS、iPadOS、macOS、visionOS 26によるパスキーの強化について説明します。キーのアップデートとしては、新しいアカウント作成APIによるサインアップの簡素化、パスキーを最新の状態に保つ方法、パスキーの自動アップグレードやパスキー管理エンドポイントを使用してパスキーをアップグレードする方法、パスキーを安全にインポート/エクスポートする方法などがあります。これらの機能強化によってユーザー体験とセキュリティを向上させる方法、およびこれらのアップデートをアプリに実装し、よりスムーズで安全な認証体験を提供する方法を紹介します。このビデオの内容を十分理解できるよう、最初に、WWDC22の「Meet passkeys」を視聴してください。

    関連する章

    • 0:00 - イントロダクション
    • 0:58 - パスキーのジャーニー
    • 3:30 - アカウント作成のAPI
    • 10:48 - パスキーを最新の状態に維持する方法
    • 14:41 - パスキーの自動アップグレード
    • 16:59 - パスキー管理エンドポイント
    • 19:12 - パスキーのインポートとエクスポート

    リソース

    • ASCredentialExportManager
    • ASCredentialProviderViewController
    • Performing fast account creation with passkeys
      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC24

    • パスキーによるアップグレードと認証情報マネージャによるサインインの効率化

    WWDC22

    • パスキーについて
  • このビデオを検索

    Authentication Experienceチームの エンジニアのAndrewです Appleは サインインをシンプルかつ迅速で 安全なものとすることに最大の関心があります

    サインインやアカウントセキュリティに関する 多くの問題の根本原因は パスワードです 業界はオンラインアカウントに パスワードの代わりにパスキーを使うことで これらの問題を根本から解決しようと 取り組んでいます パスキーは 最近よく聞くフィッシング詐欺などの パスワードに付きもののセキュリティや 使いやすさの問題を根本的に解決します また楽しいサインイン体験も 提供してくれます

    このビデオをご覧になっているということは あなたも これを実現させるチームの一員です パスワードをパスキーに置き換えるという 最も重要な目標に向かって 一緒に取り組んでいるからです

    パスキージャーニーとは この目標までの道筋のことで 業界全体でフィッシング不可能な要素のみを 使用した認証に移行するまでの 道筋を示したものです これにはいくつかの段階があります パスキーが登場する前は 多くのアカウントは パスワードや SMSまたはメールで送信される ワンタイムコードなど フィッシング可能な 要素のみを使用して作成されていました

    このジャーニーは パスキーのような フィッシング不可能な方法を サインイン方法に加えることから 始まりました 現在 ほとんどの業界が この段階にあります 目標はすべてのアカウントで フィッシング可能な要素が 一切使われなくなることで その目標を業界が 達成するための方法がパスキーです パスキーに関しては ユーザーの間に普及しつつあるほか 幅広いサービスでサポートが広がるなど 全体的に機運が高まっています 2025年にパスキーに関する標準化団体である FIDOアライアンスが行った調査によると 調査対象者の69%が少なくとも1つの パスキーを持っていることがわかりました

    Googleによれば パスキーでサインインしているユーザーは パスワードを使用しているユーザーよりも 4倍の成功率で アカウントに入ることができています TikTokでは パスキーを使用しているユーザーの サインイン成功率は 97%という驚異的な数字になっています このようなパスキーのサインイン成功率は 業界全体でよく聞かれますが パスワードでは聞いたことがありません

    順調に普及が進んでいることから パスキージャーニーの進展は明白です iOS、iPadOS、macOS、visionOS 26は パスキーをベースに構築されており アプリやWebサイト間で パスキーを簡単に発見したり作成したり 使用したりできるように 新しい機能強化が追加されています 5つの重要なアップデートについて 説明します 1つ目は新しいアカウント作成APIです これは新しいアカウントを作成する 最も速くて簡単な方法で 最初からパスキーを提供します

    次に パスキーを最新の状態に保つ 方法について説明します アカウントの変更を認証情報マネージャと 同期させる方法を紹介します

    次に パスワードベースの既存のアカウントに パスキーをシームレスに追加できる パスキーへの自動アップグレードについて 説明します その後 サービスのパスキー登録ページを 認証情報マネージャから直接表示するための パスキー管理エンドポイントについて 説明します

    最後に パスキーのインポートと エクスポートについて説明します これはパスキーの 柔軟性と制御性を向上させる 重要なエコシステムの進歩です

    最初は 新しいアカウント作成APIについてです 従来のパスワードベースの サインアップとは異なり パスキーの設定は 長くて複雑なプロセスではありません 迅速でシンプルなサインアップは とても楽です パスキーでは 複雑なパスワードを作成したり それらを思い出したりする必要はありません

    パスキーでは すばやく楽にサインインでき フィッシング詐欺対策にもなります アカウント作成APIと 最新のOSリリースを使用することで サインアップを楽しく迅速で 根本的に安全な体験とすることができます

    そのことをかわいい写真を 毎日1枚選んでくれるデモアプリの Shinyを使ってiPhoneでお見せします

    誰でも新しいアプリをインストールしたら 最初にサインアップする必要があります これはアカウント作成APIを導入する前の 従来の方法です まずメールアドレスで 新しいアカウントを作成します

    すぐにフォームに記入するよう求められます 最初はメールアドレスです 幸いなことに ここは自動入力が役に立ちます これでメールアドレスは完了です 次に 氏名を入力します

    そしてもちろん 恐怖のパスワードも入力します ベストな方法を選択して 強力なパスワードを自動で生成します

    すべて入力したら 最後に をタップしてサインインします かわいい写真が表示されます なんてかわいいんでしょう 次に アカウント作成APIを導入した後 もう一度サインインしてみます 前回同様に メールアドレスで 新しいアカウントを作成します

    複数の手順から成るフォームの代わりに Shinyが求めている情報が 表示されたシートが 提示されることに注目してください この例では氏名とメールアドレスです そしてパスキーが パスワードアプリに保存されます そして一番よいところは すべてが自動的に入力されるところです これが アカウント作成APIで可能になる 新しい合理化されたフローです 共有する情報を編集することもできます フィールドをタップすると 候補が表示されたピッカーが表示されます 候補の中から選ぶか 別の情報を手動で入力することもできます 今回はデフォルトで問題ありません そのため をタップし Face IDで認証を行ったら 完了です Shinyにサインインできました より速くシンプルで安全です

    サインインがこれまで以上に楽になります

    後でiPadで 初めてShinyを起動した場合でも

    すぐにサインインプロンプトが表示されます これはアプリが起動時に 既存の認証情報がないかどうか 確認するように設定されているためです 以前に作成したパスキーを すべてのデバイスで利用することができます をタップし Face IDを行うだけで 簡単にサインインできます この体験は iOS、iPadOS、macOS visionOS上のアプリで利用可能で パスワードアプリやサードパーティ製の 認証情報マネージャとも連携できます

    次に これらのサインアップ体験を 実装する方法について説明します

    これはアカウント作成の 主要な手順を示した関数です 最初に新しいアカウント作成プロバイダを 初期化します 次に そのプロバイダを使用して パスキー登録リクエストを作成します このメソッドでは キーの詳細を指定します 最初のパラメータは acceptedContactIdentifiersです アプリでサポートされるアカウントIDの 種類をシステムに知らせます アプリはアカウントの作成用に選択された 1つのIDのみを受け取り それをパスキーの ユーザー名ラベルとしても使用します shouldRequestNameは ユーザーの名前を 要求するかどうかを指定します アカウントの作成にユーザーの名前が 必要な場合はtrueに設定します 次の3つは 作成されるパスキーに関係するものです これらは標準のパスキー登録と 同じであるため リクエストに行う場合と同じように データを指定します

    パスキーを登録する際に使用する リライングパーティ これは一般的にはドメイン名です またサーバからフェッチされる 作成されたパスキーによる署名付きの 1回限りの課題 さらにユーザーIDは アカウントのために作成した 安定した一意の識別子です 次に ASAuthorizationControllerまでの インスタンスを取得します SwiftUIビューでは Environment プロパティラッパーを使ってアクセスできます 次に リクエストを実行します ユーザーがサインアップフローを 問題なく完了すると ASAuthorizationResultが 返されます これをアンラップすると 連絡先IDや名前を要求した場合は名前 またパスキーオブジェクトに アクセスできるようになります どうぞサーバで新しいアカウントを作成し ユーザーをサインインさせてください

    これが実装方法の基本です 問題が発生した場合は performメソッドがエラーをスローします これらのエラーを処理することで 常に最高の体験を提供できるようにできます 標準の AuthenticationServicesエラーに加えて 特に このAPIに関連した3つのエラーを 処理する必要があります 1つ目は deviceNotConfigured ForPasskeyCreationです このエラーは パスコードの未設定など デバイスが現在パスキーを作成する 状態ではないことを意味しています ユーザーがパスキーを作成する資格を 現在満たしていないことがわかるため 標準のサインアップフォームを 表示することができます Shinyで ボタンをタップすると カスタムサインアップフォームを 表示することでエラーが処理されます 次はcanceledです このエラーは ユーザーがサインアップシートを完成せずに 閉じた場合にスローされます その場合 標準のサインアップフォームを表示できます Shinyで システムシートが閉じられると カスタムサインアップフォームを 表示することでエラーが処理されます 最後は preferSignInWithAppleです このエラーはアプリが「Appleでサインイン」を サポートしている場合にのみ返されます これは誤ってアカウントが重複しないように するためのものです 「Appleでサインイン」を使用して サービスのアカウントを すでに作成しているユーザーが アカウント作成フローを開始すると このようなアラートが表示され ユーザーがそのことに気づくようにします ユーザーは「Appleでサインイン」を使用した 既存のアカウントを使うか 新しいアカウントの作成を続行できます ユーザーが既存のアカウントを使う場合に このエラーがスローされます そのため このエラーを受け取った場合 ベストプラクティスは 「Appleでサインイン」リクエストの開始 つまり「Appleでサインイン」シートを 表示することです これによりユーザーの選択を尊重し 追加のタップなしで既存のアカウントに サインインさせることができます エラーについては以上です 別のベストプラクティスとして アプリの起動時にすぐに 既存のアカウントを提供することで それを使ってアプリにサインインするよう ユーザーを誘導することもできます iPadでのデモを思い出してください 既存のアカウントがあったかどうか また前回どのようにサインインしたかどうか 考える必要もなく すぐにパスキーでサインインするかどうか たずねられました これができたのは すぐに利用可能な 推奨の認証情報オプションセットによる 複合サインインリクエストが Shinyで使用されていたからです デバイスに利用可能な アカウント認証情報がある場合 それが認証情報マネージャアプリからの パスキーやパスワードであるかどうか 「Appleでサインイン」を使用した アカウントであるかどうかに関係なく すべてをサインインに使用できます また すぐに利用可能な認証情報がない場合 UIは表示されず サインイン画面も 中断されません この機能の導入については WWDC22の 「Meet Passkeys」をご覧ください

    これがサインインを 簡単かつ安全に行うための 新しい機能である アカウント作成APIでした

    アカウントが作成されたら そのパスキー情報を 認証情報マネージャに 正確に維持することで スムーズな体験を維持しやすくなります そこで次に パスキーを 最新の状態に保つ方法について説明します アカウントは静的ではありません ユーザーはユーザー名や メールアドレスなどの情報を更新するため パスキーが無効になることがあります サインイン時に 認証情報マネージャにより 古い情報が表示されるなら 混乱や遅延が生じたり ユーザーがサービスにサインイン できなくなったりすることがあります そこでアプリやWebサイトがアカウントの変更を 認証情報マネージャに知らせることができる 新しいAPIコレクションが 利用できるようになりました これらのシグナルAPIを導入して エントリを正確に保つことで 迅速で信頼性の高いサインインを実現し 無効にならないようにすることができます

    これをShinyでどう活用できるでしょうか 例えば 私が最近大学を卒業したとして 学生用の古いメールから個人用のメールに アカウントを変更したいとします

    アプリの設定に移動してをタップし 新しいメールアドレスを入力します

    そして保存します

    するとすぐに 認証情報マネージャである パスワードアプリから ユーザー名が変更されたことが通知されます

    これをタップすると パスワードにより認証が行われ アカウントの詳細が 表示されます

    ユーザー名が新しい個人用のメールに なっていることに気づきます このように認証情報マネージャの情報が アプリのバックエンドのものと同じなります なんて几帳面なんでしょう これは アプリとWeb向けに用意された 新しいAPIによって可能になります アプリ向けに用意された新しい ASCredentialUpdaterクラスには 特定の認証情報の変更を 報告するためのメソッドが用意されています 同様のメソッドが Web向けにも用意されており Safari 19やその他のブラウザで利用可能な WebAuthn標準に含まれています

    最初のシグナルは ユーザー名の変更です デモで見たように ユーザーがユーザー名やメールアドレス またアカウントに表示される その他のラベルを更新した場合は reportPublicKeyCredentialUpdate メソッドを使用して 認証情報マネージャに知らせます これにより サインイン時に表示されるラベルを 常に最新の状態に保ち 混乱を防ぐことができます なお パスキーのユーザー名は ローカルのみのラベルで 認証中にサーバに 返されることはありません

    Webの場合は PublicKeyCredentialに対して signalCurrentUserDetailsメソッドを 使用することで同じことを行えます

    次はパスキーの無効化です 多くのアプリやWebサイトには パスキー管理ページがあり そこでは 個々のパスキーを無効にしたり 新しいパスキーを作成したりできます パスキーが無効化されたときはいつでも reportAllAcceptedPublicKeyCredentials メソッドを 呼び出して 依然として有効な 認証情報IDを指定します これを行うと 認証情報マネージャにより 指定したIDセットにない パスキーがすべて削除されます これによりユーザーがサインインしたときに 無効なパスキーが表示されなくなります これを定期的に呼び出してアカウントの ヘルスチェックを行うこともできます 何か変更があった場合 このことは認証情報マネージャと 最新情報を共有するのに役立ちます

    signalAllAcceptedCredentials メソッドを使って 同じことをWebでも行えます

    結局のところ 最も安全なアカウントは パスワードをまったく使用しない アカウントです 新しいアカウント作成APIで 作成されたアカウントでは パスワードを一切使用しないため 作成した日から安全に守ることができます

    既存のアカウントについては パスワードが必要なくなった場合に 情報マネージャに 通知できるようになりました reportUnusedPasswordCredential APIは アカウントがパスキージャーニーの 最後の一歩を踏み出し パスワードが一切使用されなくなったことを 示しています

    もちろんすべての認証情報マネージャが これらのシグナルの処理に対応していますが これらの更新シグナルをリッスンし 管理対象の認証情報を最新の状態に保つには 新しいAPIを導入する必要があります 詳しくは ASCredentialProviderViewControllerの レポートメソッドに関する デベロッパ向けドキュメントをご覧ください このようにこれらの新しいAPIは 認証情報を正確に維持するのに役立ちます 次に 特に依然としてパスワードを使用して サインインしているユーザーに対して パスキーを導入するように 促す方法について考えてみましょう パスキーへの自動アップグレードでは パスワードベースの既存のアカウントに パスキーを シームレスに追加することができます アプリやWebサイトで パスワードによるサインインの直後に ストレスなく作成できます それをお見せします Shinyに戻って 私が依然として パスワードでサインインしているとします ユーザー名とパスワードを自動入力し をタップして サインインします Shinyにはパスキーへの 自動アップグレードが導入されているため このようになります パスキーが作成されたという 通知が表示されます アップセル画面や中断はなく シームレスに移行でき よりシンプルで安全なサインイン体験を 利用できるようになります 先ほど使用したパスワードも 引き続き使用できること注意してください このプロセスは安全なサインイン方法として パスキーを追加するだけです コードを見てみましょう これはパスキーへの自動アップグレードです ユーザーがパスワードでサインインすると アカウントの詳細にアクセスできます 最初にアカウントに まだパスキーがないかどうか確認します ない場合は パスキーを作成するときと同じように パスキー登録リクエストを作成します requestStyleを conditionalに設定することで パスキーへの自動アップグレードを 有効にします このように設定することで リクエストを実行した後 システムおよび認証情報マネージャによって 認証情報マネージャが利用可能かどうか このアカウントにパスワードが 使用されたかどうか またデバイスにパスキーが 設定されているかどうかなどの チェックがバックグラウンドで実行されます すべての条件が満たされた場合 システムによりパスキーが作成され 通知が表示されます そして保存するパスキーオブジェクトが アプリに送られます これらすべてはユーザーの操作を中断したり ブロックしたりすることなく行われます いずれかの条件が満たされなかった場合 呼び出しがエラーなしで失敗します システムによってUIは表示されず 特定のエラー処理も必要ありません ユーザーがパスキーを持っていない場合 パスワードでサインインするたびに アプリでアップグレードを促す必要があります

    同様のWeb APIもあります パスキーへの自動アップグレードについて 詳しくはWWDC24のビデオ 「Streamline sign-in with passkey upgrades and credential managers」 をご覧ください 自動アップグレードは ストレスのない理想的な方法です

    これを補完するために パスキー管理エンドポイントの よく知られたURLを導入することで 認証情報マネージャから パスキー管理ページまでの 直接リンクを表示できます これはパスキーの導入を強調するのに 優れた方法です それをお見せします これはパスワードアプリの画面です 依然としてパスワードを使用している Shinyへの保存エントリが表示されています パスキーへのアップグレードが利用可能だと 新しいセクションに示されています ボタンをタップすると Webサイトが開き パスキー登録に指定されたページに 直接移動します

    この標準を実装することで 認証情報マネージャから パスキー登録ページまでの 直接リンクを作成できます これによりユーザーは別の方法で 認証情報マネージャから 直接アップグレードできるようになります またこれは標準に基づいているため 対応しているすべての 認証情報マネージャで機能します

    これをサポートするには サーバのよく知られたパスキー エンドポイントパスでJSON応答を調査します 応答はリダイレクトを介さず このパスから直接行われている必要があります

    状態コードを200 OKに またConten-Typeのヘッダを application/jsonにして この応答を提供します

    応答のコンテンツは Webサイトの 関連するページをポイントした JSON辞書です

    enrollはユーザーがパスキーを アカウントに追加できるURLです これはパスワードアプリの ボタンのリンク先です manageはユーザーが既存の パスキーを管理することができるURLで 変更されたパスワードページに似ています ここでは既存のパスキーを無効にしたり 新しいパスキーを追加したりできます

    これらのフィールドはすべて任意ですが 両方を含めることをおすすめします これらのURLが 認証セッションなしにアクセスしたユーザーを 正しく処理できることが 重要になります サインインが必要な場合は まず認証を行い その後 最初にリクエストされたURLに リダイレクトします

    このページにはすべてのユーザーエージェントが アクセスでき利用できなければなりません これをリクエストするのは Webブラウザだけではありません 認証情報マネージャのような アプリもリクエストします

    パスキー管理エンドポイントに よく知られたURLを実装することで サービスにパスキーを導入するよう ユーザーを促すヒントを 認証情報マネージャにヒントを提供できます

    次に パスキーのインポートと エクスポートについて説明します

    ユーザーは独自の認証情報を所有しており それらを好きなところで 柔軟に管理できなければなりません そこで iOS、iPadOS、macOS visionOS 26上の 対応している認証情報マネージャアプリ間で パスキーを安全に転送できるようになったことを お知らせできることをうれしく思います これによりユーザーは自分のデータを より詳細に制御できるようになり 使用する認証情報マネージャを 自由に選べるようになりました

    この新しいプロセスは 従来の認証情報エクスポート方法とは 根本的に異なり それらよりも安全です 従来の方法では 多くの場合 暗号化されていないCSVファイルや JSONファイルをエクスポートした後 別のアプリに手動でインポートしていました 新しい転送プロセスは ユーザーにより開始され 対応している認証情報マネージャアプリ間で 直接行われ Face IDなどのローカル認証によって 保護されます この転送には パスキーやパスワード 確認コード またその他のデータタイプの データ形式を標準化している FIDOアライアンスの メンバーと共同で構築された データスキーマが使用されています システムにより アプリ間でデータを移動する 安全なメカニズムが提供されます 安全でないファイルは作成されないため エクスポートされたファイルから 認証情報が漏洩するリスクがありません これは認証情報を移動するための 現代的で安全な方法です

    プロセスは認証情報マネージャ間で 直接行われるため アプリやWebサイトが認証情報の転送で 何か行う必要はありません 既存のパスキーは変更されず 引き続きシームレスに使用できます 認証情報マネージャアプリで 認証情報の転送サポートを検討している場合 ASCredentialExportManagerと ASCredentialImportManagerの デベロッパ向けドキュメントをご覧ください

    パスキーは進化を続けており よりシンプルな体験でより強力なセキュリティを 提供できるようになっています 今回の新しいOSリリースでもさらに簡単に 作成 使用 発見できるようになっています パスワードのない未来に向けて 私たちは共に旅をしています これをすべての人に実現するには これらの機能を導入することが 重要になります 最高の認証体験を 提供するための次のステップは次の通りです まず 安全で迅速なオンボーディングのために アカウント作成APIを導入します 次に シグナルAPIを使用してパスキーを 最新の状態に保ち ユーザー名の更新や パスキーの削除などのアカウントの変更を 認証情報マネージャに知らせます パスワードからシームレスに 移行できるように パスキーへの自動アップグレードを 有効にします 最後にWebサイトからパスキー管理 エンドポイントを提供することで 認証情報マネージャからパスキーへの アップグレードを発見しやすくします 以上がパスキーの最新情報でした ご視聴ありがとうございました

    • 6:33 - Account creation

      // Account creation
      
      @Environment(\.authorizationController) var authorizationController
      
      func performPasskeySignUp() async throws {
          let provider = ASAuthorizationAccountCreationProvider()
          let request = provider.createPlatformPublicKeyCredentialRegistrationRequest(
              acceptedContactIdentifiers: [.email, .phoneNumber],
              shouldRequestName: true,
              relyingPartyIdentifier: "example.com",
              challenge: try await fetchChallenge(),
              userID: try await fetchUserID()
          )
      
          do {
              let result = try await authorizationController.performRequest(request)
              if case .passkeyAccountCreation(let account) = result {
                  // Register new account on backend
              }
          } catch
              ASAuthorizationError
              .deviceNotConfiguredForPasskeyCreation {
              showPasswordSignUpForm = true
          } catch ASAuthorizationError.canceled {
              showPasswordSignUpForm = true
          } catch
              ASAuthorizationError.preferSignInWithApple {
              await performSignInWithApple()
          } catch { ... }
      }
    • 12:30 - Changing the user name

      // Changing the user name
      
      try await ASCredentialUpdater()
          .reportPublicKeyCredentialUpdate(
              relyingPartyIdentifier: "example.com",
              userHandle: userHandle,
              newName: "andrew@example.com"
          )
    • 12:58 - Changing the user name

      // Changing the user name
      
      await PublicKeyCredential.signalCurrentUserDetails({
          rpId: "example.com",
          userId: userHandle,
          name: "andrew@example.com",
          displayName: "andrew@example.com"
      });
    • 13:07 - Revoking a passkey

      // Revoking a passkey
      
      try await ASCredentialUpdater()
          .reportAllAcceptedPublicKeyCredentials(
              relyingPartyIdentifier: "example.com",
              userHandle: userHandle,
              acceptedCredentialIDs: acceptedCredentialIDs
          )
    • 13:46 - Revoking a passkey

      // Revoking a passkey
      
      await PublicKeyCredential.signalAllAcceptedCredentials({
          rpId: "example.com",
          userId: userHandle,
          allAcceptedCredentalIds: acceptedCredentialIds
      });
    • 14:04 - Removing a password

      // Removing a password
      
      try await ASCredentialUpdater()
          .reportUnusedPasswordCredential(
              domain: "example.com",
              username: "andrew@example.com"
          )
    • 15:36 - Automatic passkey upgrade

      // Automatic passkey upgrade
      
      func signIn() async throws {
          let accountDetails = try await signInWithPassword()
          guard !accountDetails.hasPasskey else { return }
      
          let provider = ASAuthorizationPlatformPublicKeyCredentialProvider(
              relyingPartyIdentifier: "example.com")
      
          let request = provider.createCredentialRegistrationRequest(
              challenge: try await fetchChallenge(),
              name: accountDetails.userName,
              userID: accountDetails.userID,
              requestStyle: .conditional
          )
      
          do {
              let passkey = try await authorizationController.performRequest(request)
              // Save new passkey to the backend
          } catch { ... }
      }
    • 0:00 - イントロダクション
    • The Authentication Experience team is working to eliminate passwords in favor of passkeys — a more secure and user-friendly method that eradicates phishing and streamlines the sign-in process.

    • 0:58 - パスキーのジャーニー
    • Recent updates to iOS, iPadOS, macOS, and visionOS make passkey creation, management, and upgrading easier, accelerating passkey adoption. The industry is transitioning from phishable passwords and SMS/email codes to non-phishable passkeys. Currently, many accounts offer passkeys as an additional sign-in method, but the goal is to eliminate phishable factors entirely. Adoption of passkeys is growing rapidly and passkeys have high sign-in success rates. In a 2025 survey, the FIDO Alliance found that 69% of people surveyed have at least one passkey. Google found that users signing in with passkeys are four times more successful than users who sign in with passwords.

    • 3:30 - アカウント作成のAPI
    • The new account creation API revolutionizes the sign-up process for apps. This API is available on iOS, iPadOS, macOS, and visionOS, and works with both the Passwords app and third-party credential managers. With this API, people can create accounts with passkeys, which eliminates the need to remember complex passwords, makes the experience more user-friendly, and reduces the risk of phishing attacks. The sign-up process after adopting the account creation API is incredibly streamlined. Instead of a multi-step form, a pre-filled sheet shows exactly what the app is requesting for sign-up, for example, email and name. Sign-up information is editable by the person. Upon completion, the system automatically generates a passkey, which is saved in the Passwords app. The benefits of passkeys extend beyond sign-up. Signing in with passkeys is effortless, and passkeys are automatically synced across all devices to ensure a seamless user experience. You can easily implement the account creation API in your apps by following a few core steps. The API handles potential errors gracefully, providing people with a smooth sign-up experience even if their device is not configured for passkey creation or if they already have an account using Sign in with Apple.

    • 10:48 - パスキーを最新の状態に維持する方法
    • New signal APIs enable apps and websites to notify credential managers when account information changes, such as usernames or email addresses, or when passkeys are revoked. This ensures that credential managers remain up-to-date, preventing confusion and login issues. For example, when someone updates their email address in an app, the app immediately signals the credential manager, which then updates its records. These APIs support accounts without passwords which are the most secure accounts. The APIs also inform credential managers when passwords are no longer needed, enhancing overall security and improving user experience.

    • 14:41 - パスキーの自動アップグレード
    • Automatic passkey upgrades enhance account security for users still signing in with passwords without introducing friction. After a successful password login, apps and websites can create passkeys in the background without any user interaction or interruptions. A notification informs a person when a passkey is added, providing a simpler and more secure sign-in option moving forward. The password remains valid, and the upgrade process occurs silently on every password sign-in attempt if a passkey doesn't already exist.

    • 16:59 - パスキー管理エンドポイント
    • By implementing the standard well-known URL for passkey management endpoints, websites can directly link credential managers to their passkey enrollment and management pages. This approach streamlines the passkey-upgrade process for people, so they can easily switch from passwords within their credential managers. The JSON response from the server must include URLs for enrollment and management, be served with a '200 OK' status code, and be accessible to all user agents, including apps and web browsers.

    • 19:12 - パスキーのインポートとエクスポート
    • Passkeys can now be securely transferred between participating credential manager apps across iOS, iPadOS, macOS, and visionOS 26. This user-initiated process, secured by local authentication like Face ID, reduces the risk of credential leaks. The transfer uses a standardized data schema developed by the FIDO Alliance, ensuring compatibility between apps. Deliver the best authentication experience for your users and help them move to a more secure future without passwords. Adopt the account creation API for secure and quick onboarding, keep passkeys up-to-date using the signal API, enable automatic passkey upgrades, and support passkey management endpoints.

Developer Footer

  • ビデオ
  • WWDC25
  • パスキーの新機能
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習とAI
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード(英語)
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    Apple Developerアプリを入手する
    Copyright © 2025 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン