.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

Sign in with Appleについてのサマリ。

  • Apple IDは ≒ Microsoft Accountみたいなもの。
  • Apple IDこのApple IDによる外部ログインができるようになる。
  • セキュア
    • FaceID / TouchID で認証できる。
    • プッシュ通知の2要素認証が必須。
    • 属性は、IDとメアドのみ。

詳細

実機確認はしていません(ネットから収集した情報をまとめています)

  • かなり早いスピードで実装が変わっているらしいので、ココで書いたことも変わっているかも。
  • なので、仕様上の細かな問題は(修正される可能性が高いので)割愛してあります。

各種ID

Apple Developer Account 登録すると以下のようにIDが割り当てられる。

AppleID

OAuth Client ID

  • Native SDKを使用する場合は、App ID が OAuth Client ID に該当するらしい。
  • それ以外では、Service ID が OAuth Client ID に該当するらしい(今回追加された)。

Primary App ID

Dynamic Client Registrationする際のキー的な。

  • OAuth Client ID(App ID / Service ID)の上位概念。
  • 複数の Key(ES256用)を発行できる。
  • Client Access を Revoke

各種クレーム

Subject

  • Subjectには、PPID (Pairwise Pseudonymous Identifier)を使用
  • このため、プライバシー・フレンドリーである。
  • Team ID 単位でPPID を発行する。

Email

  • Native SDK 経由、email scope を要求するとEmail アドレスが払い出される。
  • 以下を選択可能。
    • Apple ID に紐づいたメアド
    • Team ID 単位でランダムなメアド(Private Email address)
      • メールボックの実態はなく、Private Email Relay Serviceにより転送される。
      • Team ID に 紐付くドメインからのみ送信可能
        (サービス提供者以外からのメールはリレーしない)。

各種パラメタ、

Client Secret

  • private_key_jwt的に鍵で署名。
    • iss が Team ID
    • sub に Client IDだが、前述の通り、
      • Native SDK なら App ID
      • Native SDK 以外なら Service ID

各種エンドポイント

認可エンドポイント

https://appleid.apple.com/auth/authorize

トークンエンドポイント

https://appleid.apple.com/auth/token

UserInfo?エンドポイント

  • form_postでid_tokenと一緒にuser情報が返ってくる。
    • id_tokenの中には、メアドが、
    • その他の情報はuser情報から。
  • 上記の(subを除く)情報は、
    初回のみ取得できて、以降は取得できないらしい。
  • IdMaaSのエンドユーザ・カスタマイズで苦労したりする。

その他

公式のSDK

Apple 公式 JS SDK と Native SDKがある。

  • WebAuthn?的にFaceID / TouchID で認証できUXが素晴らしいらしい(Appleっぽい)。
  • が、それ以外の環境でのログイン UX は結構辛い(Appleっぽい)。
  • また、Touch ID / Face IDを使える環境が色々あるっぽい(面倒臭い)。

PKCE

PKCEが無いらしい。スマホなのに。

参考

OAuth.jp

Qiita

slideshare

#idcon vol.27

Sign in with Apple 特集


添付ファイル: fileAppleID.png [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-08-28 (水) 13:39:58 (21d)