4

NSURLAuthenticationMethodServerTrust を理解できません。私のアプリでは、サーバーに基づいて http 接続と https 接続の両方を使用する必要があります。私の質問は、NSURLAuthenticationMethodServerTrust チャレンジを取得した場合、https 接続として安全に想定できるかどうかです。この課題に対して、具体的にどのような対応をすればよいのでしょうか。

どんな助けでも大歓迎です。ありがとう

4

1 に答える 1

1

NSURLAuthenticationMethodServerTrust受信が常に https 接続を示しているかどうかはわかりません。単純な http 接続が認証の課題を引き起こす理由や方法がNSURLAuthenticationMethodServerTrustわからないので、https だと思いますが、確かなことはわかりません。しかし、 にNSURLAuthenticationChallengeは がありNSURLProtectionSpace、これには プロパティ がありますreceivesCredentialSecurely。ドキュメントは少し具体的ではありませんが、このプロパティは、http/https の場合は https を意味するサーバーへの安全な接続を示していると思います。

何に応答するかについては、このトピックに関して macnetworkprog-mailinglist に役立つスレッドがあります: Question + Answer

概要: これNSURLAuthenticationMethodServerTrustは、クライアントがサーバーの認証チャレンジに応答することではなく、クライアントであるあなたに、サーバーをまったく信頼する必要があるかどうかを確認する機会を与えることです。その場合、protectionSpaceチャレンジの には、serverTrustこのサーバーが信頼できるかどうかを検証するために必要なすべての情報を含むオブジェクト/構造体が含まれます。一般に、SecTrustEvaluate関数を使用して をチェックしserverTrust、そのチェックの結果に従って動作します。詳細については、こちらを参照してください: TLS チェーン検証を正しくオーバーライドする

チェックでサーバーが信頼できると判断された場合はオブジェクトを使用して を作成し、NSURLCredentialserverTrustそれを認証チャレンジの送信者/完了ブロックに渡します。

Appleによる非常に 広範なサンプル プロジェクトをここで見つけることができます。 1つの代わりにメソッドを委任する必要があった古いNSURLConnectionDelegateもののみを処理します(新しいものやのようにNSURLSessionDelegate)。しかし、そこに示されている検証と、実装できるさまざまなシナリオは引き続き適用され、簡単に に転送できるはずNSURLSessionです。

于 2016-03-04T09:55:21.683 に答える