「[[.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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS