Appleの色々な事メモ
・証明書の秘密鍵を起用有する理由について
証明書を作成、プロビジョニングプロファイルを作成した人(A君)は、作成した人なので秘密鍵がkeyチェーンに登録されているが、他の開発者(B君)は作成していないので秘密鍵を持っていない
B君は証明書をAppleDeveloperからダウンロードできるが、秘密鍵を持っていないので使用できない
なので、使用できるようにA君がp12ファイルを作成して共有してあげる
そうすると証明書とか使用できる
p12ファイルには以下の物が含まれている
- 公開鍵
- 秘密鍵
- クライアント証明書
- 中間CA証明書
p12ファイルに証明書含まれているので、AppleDeveloperからダウンロードしなくても良いかもだ
・公開鍵と秘密鍵について
- 公開鍵:文書(データ)を暗号化するためのもの
- 秘密鍵:暗号化されたデータを復号し解読できる形にできるもの
- データを受け取りたい受信者が公開鍵と秘密鍵を作成する
- 作成した公開鍵をデータ送信者に渡す
- 送信者は公開鍵を使用して、データを暗号化し、データを送信する
- 受信者は秘密鍵を使用して、データを複合化し、データを確認できるようにする
公開鍵が漏洩しても問題ない、なぜなら秘密鍵を知られていないから結局複合化できずに中身は確認できないから
テストフライトuploadするためには、プロビジョニングプロファイルはAppDistributionでないとダメ
AdHocはAppleStoreConnectを通さずに、プロビジョニングプロファイルに登録済みのデバイスのみにアプリを配布するときに使用する
AppleStoreConnectにupload時、アーカイブしてipaファイル作成する
そのipaファイルをAppleStoreConnectに送る
参考記事
1アカウントが本番用証明書(Distribution)を作成できる数は3枚まで
開発用証明書(Develpment)は何枚でもいい?
以下AppleDeveloper公式サイトから
開発用証明書は個人が所有します。開発用証明書は合計でiOS用に2つ、Mac用に2つ作成できます
プロビジョニングプロファイルと証明書は1対1でなくてもいい
1つの証明書が複数のプロビジョニングプロファイルに結びついていても良いとのこと
ただ、理想は1対1なのかな?
Auth0を調査している時のメモ
-
ログインボタン押下時に出てくるログインモーダルビューについて
Swiftで提供されているASWebAuthenticationSessionというクラスで表示されている
Safariアプリで表示されるブラウザとは別の概念
なのでsession、cookieは共有されない
ログイン後にkmcサイトに登録しているプロフィールを編集したいとなるのであれば、モーダルビューないで行う必要がある(認証情報は保持されているので再度ログインをしなくてもできる。しかしユーザーへの情報共有確認ダイアログはマストで出る) -
lanchUrlについて
flutterのlancher_urlパッケージでブラウザに遷移できるが、ログインモーダルビューとは別のものなので、ブラウザで認証状態にしたかったらブラウザでログインするしかない -
ログインボタン押下時にモーダルビューではなくてブラウザに遷移させて認証させる場合
ブラウザ内で認証処理が完結してしまうので、アプリ側に認証結果が返却されない、なので認証情報を保持できない
testflight、利用可能なビルドがなかったらテスターに登録してもテスターに招待メール飛ばない
ビルドできたらメールとぶ
- ASWebAuthenticationSession
公式サイトから抜粋
アプリがWebサービスを通じてユーザーを認証するために使用するセッション
ASWebAuthenticationSessionインスタンスを使用して、サードパーティによって実行されるものを含むWebサービスを通じてユーザーを認証することができます。認証用Webページを指すURLでセッションを初期化します。ユーザーが認証セッションを開始すると、オペレーティングシステムはモーダルビューを表示し、アプリがどのドメインで認証しているかを伝え、続行するかどうかを尋ねます。ユーザーが認証の試みを進めると、ブラウザがページをロードして表示し、そこからユーザーが認証することができます。iOSの場合、ブラウザは安全な埋め込み型ウェブビューです。macOSでは、Web認証セッションをサポートしている場合はユーザーのデフォルトのブラウザが、そうでない場合はSafariが開かれる仕組みになっています。
完了すると、サービスは認証トークンを含むコールバックURLをセッションに送信します。セッションは、完了ハンドラを通じて、このURLをアプリに返します。ASWebAuthenticationSessionは、複数のアプリが同じコールバックURLスキームを登録した場合でも、呼び出し元のアプリのセッションのみが認証コールバックを受信することを保証します。
とのこと
Googleログインとかするときにボタン押下して下からニュルって出てくるやつのことやな
これでシングルサインオン(sso)が実現できる感じ?
参考:
同じidの本番用証明書を複数キーチェーンに登録していると、証明書あるのにプロファイルに紐づいた証明書がないよーってエラーになってしまう
なので、本番証明書はteamで1つにしておいて、その一つをいろいろなプロファイルに紐づけるのが正解かも