Open9

Appleの色々な事メモ

tsubasatsubasa

・証明書の秘密鍵を起用有する理由について
証明書を作成、プロビジョニングプロファイルを作成した人(A君)は、作成した人なので秘密鍵がkeyチェーンに登録されているが、他の開発者(B君)は作成していないので秘密鍵を持っていない
B君は証明書をAppleDeveloperからダウンロードできるが、秘密鍵を持っていないので使用できない
なので、使用できるようにA君がp12ファイルを作成して共有してあげる
そうすると証明書とか使用できる

p12ファイルには以下の物が含まれている

  • 公開鍵
  • 秘密鍵
  • クライアント証明書
  • 中間CA証明書

p12ファイルに証明書含まれているので、AppleDeveloperからダウンロードしなくても良いかもだ

tsubasatsubasa

・公開鍵と秘密鍵について

  • 公開鍵:文書(データ)を暗号化するためのもの
  • 秘密鍵:暗号化されたデータを復号し解読できる形にできるもの
  1. データを受け取りたい受信者が公開鍵と秘密鍵を作成する
  2. 作成した公開鍵をデータ送信者に渡す
  3. 送信者は公開鍵を使用して、データを暗号化し、データを送信する
  4. 受信者は秘密鍵を使用して、データを複合化し、データを確認できるようにする

公開鍵が漏洩しても問題ない、なぜなら秘密鍵を知られていないから結局複合化できずに中身は確認できないから

tsubasatsubasa

テストフライトuploadするためには、プロビジョニングプロファイルはAppDistributionでないとダメ
AdHocはAppleStoreConnectを通さずに、プロビジョニングプロファイルに登録済みのデバイスのみにアプリを配布するときに使用する

tsubasatsubasa

1アカウントが本番用証明書(Distribution)を作成できる数は3枚まで
開発用証明書(Develpment)は何枚でもいい?
以下AppleDeveloper公式サイトから

開発用証明書は個人が所有します。開発用証明書は合計でiOS用に2つ、Mac用に2つ作成できます

https://developer.apple.com/jp/help/account/create-certificates/certificates-overview/#:~:text=Appをテスト用に,2つ作成できます。

プロビジョニングプロファイルと証明書は1対1でなくてもいい
1つの証明書が複数のプロビジョニングプロファイルに結びついていても良いとのこと
ただ、理想は1対1なのかな?

tsubasatsubasa

Auth0を調査している時のメモ

  • ログインボタン押下時に出てくるログインモーダルビューについて
    Swiftで提供されているASWebAuthenticationSessionというクラスで表示されている
    Safariアプリで表示されるブラウザとは別の概念
    なのでsession、cookieは共有されない
    ログイン後にkmcサイトに登録しているプロフィールを編集したいとなるのであれば、モーダルビューないで行う必要がある(認証情報は保持されているので再度ログインをしなくてもできる。しかしユーザーへの情報共有確認ダイアログはマストで出る)

  • lanchUrlについて
    flutterのlancher_urlパッケージでブラウザに遷移できるが、ログインモーダルビューとは別のものなので、ブラウザで認証状態にしたかったらブラウザでログインするしかない

  • ログインボタン押下時にモーダルビューではなくてブラウザに遷移させて認証させる場合
    ブラウザ内で認証処理が完結してしまうので、アプリ側に認証結果が返却されない、なので認証情報を保持できない

tsubasatsubasa

testflight、利用可能なビルドがなかったらテスターに登録してもテスターに招待メール飛ばない
ビルドできたらメールとぶ

tsubasatsubasa
  • ASWebAuthenticationSession

公式サイトから抜粋

アプリがWebサービスを通じてユーザーを認証するために使用するセッション
ASWebAuthenticationSessionインスタンスを使用して、サードパーティによって実行されるものを含むWebサービスを通じてユーザーを認証することができます。認証用Webページを指すURLでセッションを初期化します。ユーザーが認証セッションを開始すると、オペレーティングシステムはモーダルビューを表示し、アプリがどのドメインで認証しているかを伝え、続行するかどうかを尋ねます。ユーザーが認証の試みを進めると、ブラウザがページをロードして表示し、そこからユーザーが認証することができます。iOSの場合、ブラウザは安全な埋め込み型ウェブビューです。macOSでは、Web認証セッションをサポートしている場合はユーザーのデフォルトのブラウザが、そうでない場合はSafariが開かれる仕組みになっています。
完了すると、サービスは認証トークンを含むコールバックURLをセッションに送信します。セッションは、完了ハンドラを通じて、このURLをアプリに返します。ASWebAuthenticationSessionは、複数のアプリが同じコールバックURLスキームを登録した場合でも、呼び出し元のアプリのセッションのみが認証コールバックを受信することを保証します。

とのこと
Googleログインとかするときにボタン押下して下からニュルって出てくるやつのことやな
これでシングルサインオン(sso)が実現できる感じ?

参考:
https://developer.okta.com/blog/2022/01/13/mobile-sso

tsubasatsubasa

同じidの本番用証明書を複数キーチェーンに登録していると、証明書あるのにプロファイルに紐づいた証明書がないよーってエラーになってしまう

なので、本番証明書はteamで1つにしておいて、その一つをいろいろなプロファイルに紐づけるのが正解かも