私のプロジェクトでは、クローズド ソース フレームワーク (知りたい場合はBackbase ) を使用しています。これは、「すぐに使える」多くのセキュリティ オプションを提供するハイブリッド アプリケーション フレームワークです。そのうちの 1 つが証明書のピン留めで、私はその実装に非常に興味をそそられています。
構成ファイルにプロパティを設定するだけで済みます。実行されたすべてのリクエストURLSession.shared
はフレームワークを介して処理され、ピン留めが効果的です。ただし、独自の をインスタンス化するURLSession
と、固定は効果的ではありません。しかしURLSession
、フレームワークのNSURLSessionConfiguration
.
コードしか読めない人向け:
// Pinning effective
URLSession.shared.dataTask(with: request, completionHandler: completion)
// Pinning not effective
URLSession(configuration: .default).dataTask(with: request, completionHandler: completion)
// Pinning effective
URLSession(configuration: ShinnyFramework.getConfiguration()).dataTask(with: request, completionHandler: completion)
私にとってURLSession.shared
は不変なので、その動作を変更することはできませんでした。URLSession
また、ピン留めを実装するには、カスタムを使用して新しい を作成するしか方法がありませんでしたURLSessionDelegate
。
私の質問は次のとおりです。この動作を取得するために彼らは何をしましたか? メソッドのスウィズリング、Isa スウィズリング、その他の何か?
編集:証明書のピン留めを実装する方法についての詳細な説明は探していません。私がもっと興味を持っているのは、おそらく不変の静的プロパティを編集する方法とURLSession
、デリゲートを使用せずにオブジェクトの動作を構成する方法です。