「.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が割り当てられる。
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 特集