「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[iOS]] --[[認証基盤]] *目次 [#x7d65ef5] #contents *概要 [#s4999b2c] Sign in with Appleについてのサマリ。 -Apple IDは ≒ Microsoft Accountみたいなもの。 -Apple IDこのApple IDによる外部ログインができるようになる。 -FaceID / TouchID で認証できる。 -プッシュ通知の2要素認証が必須。 -属性は、IDとメアドのみ。 -セキュア --FaceID / TouchID で認証できる。 --プッシュ通知の2要素認証が必須。 --属性は、IDとメアドのみ。 *詳細 [#cd5716fd] 実機確認はしていません(ネットから収集した情報をまとめています) -かなり早いスピードで実装が変わっているらしいので、ココで書いたことも変わっているかも。 -なので、仕様上の細かな問題は(修正される可能性が高いので)割愛してあります。 **各種ID [#k245ff23] Apple Developer Account 登録すると以下のようにIDが割り当てられる。 #ref(AppleID.png,left,nowrap,AppleID) ***OAuth Client ID [#pfded895] -Native SDKを使用する場合は、App ID が OAuth Client ID に該当するらしい。 -それ以外では、Service ID が OAuth Client ID に該当するらしい(今回追加された)。 ***Primary App ID [#g6021b84] Dynamic Client Registrationする際のキー的な。 -OAuth Client ID(App ID / Service ID)の上位概念。 -複数の Key(ES256用)を発行できる。 -Client Access を Revoke **各種クレーム [#qdb4dbf7] ***Subject [#pe9e5354] -Subjectには、PPID (Pairwise Pseudonymous Identifier)を使用 -このため、プライバシー・フレンドリーである。 -Team ID 単位でPPID を発行する。 ***Email [#t0425512] -Native SDK 経由、email scope を要求するとEmail アドレスが払い出される。 -以下を選択可能。 --Apple ID に紐づいたメアド --Team ID 単位でランダムなメアド(Private Email address) ---メールボックの実態はなく、Private Email Relay Serviceにより転送される。 ---Team ID に 紐付くドメインからのみ送信可能~ (サービス提供者以外からのメールはリレーしない)。 **各種パラメタ、 [#yea86331] ***Client Secret [#z434737d] -[[Primary App ID>#g6021b84]]に対し、~ 複数鍵を設定できるのでkid必要 -private_key_jwt的に鍵で署名。 --iss が Team ID --sub に Client IDだが、前述の通り、 ---Native SDK なら App ID ---Native SDK 以外なら Service ID **各種エンドポイント [#o4858438] ***認可エンドポイント [#f501c795] https://appleid.apple.com/auth/authorize ***トークンエンドポイント [#p3cccd5c] https://appleid.apple.com/auth/token ***UserInfoエンドポイント [#w3b94b19] -form_postでid_tokenと一緒にuser情報が返ってくる。 --id_tokenの中には、メアドが、 --その他の情報はuser情報から。 -上記の(subを除く)情報は、~ 初回のみ取得できて、以降は取得できないらしい。 -IdMaaSのエンドユーザ・カスタマイズで苦労したりする。 **その他 [#a312946c] ***公式のSDK [#x77c4ea6] Apple 公式 JS SDK と Native SDKがある。 -WebAuthn的にFaceID / TouchID で認証できUXが素晴らしいらしい(Appleっぽい)。 -が、それ以外の環境でのログイン UX は結構辛い(Appleっぽい)。 -また、Touch ID / Face IDを使える環境が色々あるっぽい(面倒臭い)。 ***PKCE [#vbf6d17b] PKCEが無いらしい。スマホなのに。 *参考 [#eaa5c463] **OAuth.jp [#t815a856] -Sign in With Apple の特徴分析~ --(1)~ https://oauth.jp/blog/2019/06/08/sign-in-with-apple-analysis/ --(2)~ https://oauth.jp/blog/2019/06/12/sign-in-with-apple-analysis-2/ **Qiita [#jc41470f] -Sign In with Apple を Web に実装 - サンプルコード~ https://qiita.com//treastrain/items/c1f04c1fc757c92d4bf3 -Sign in with Apple 用の Ruby Gem をリリースして Rails でサンプル実装してみました~ https://qiita.com/nov/items/b19f1ffe35288d0110b2 **slideshare [#p854b11b] ***#idcon vol.27 [#l25e7866] Sign in with Apple 特集 -Sign In with Apple概要 iOSでの実装方法検討 #idcon~ https://www.slideshare.net/techblogyahoo/sign-in-with-apple-ios-idcon -IDaaSにSign in with Appleをつないでみた~ https://www.slideshare.net/naohiro.fujie/idaassign-in-with-apple -Sign in with Apple~ https://www.slideshare.net/matake/sign-in-with-apple