シングルサインオンのセキュリティ
シングルサインオン
iOSとiPadOSでは、企業ネットワークへの認証にシングルサインオン(SSO)を使用できます。SSOはKerberosベースのネットワークに対応しており、アクセスが承認されているサービスに対してユーザを認証します。SSOは、幅広い範囲のネットワークアクティビティに利用することができ、Safariの安全なセッションや、他社製アプリで使用できます。証明書ベースの認証(PKINITなど)にも対応しています。
macOSでは、企業ネットワークへの認証にKerberosを使用できます。アプリは、アクセスを承認されているサービスに対するユーザ認証にKerberosを使用できます。Kerberosは、幅広い範囲のネットワークアクティビティにも利用することができ、Safariの安全なセッションや、他社製アプリに対するネットワークファイルシステムの認証で使用できます。証明書ベースの認証にも対応しています。ただし、アプリでデベロッパAPIが採用されている必要があります。
iOS、iPadOS、およびmacOSのSSOは、SPNEGOトークンとHTTP Negotiateプロトコルを使用して、Kerberosベースの認証ゲートウェイや、Kerberosチケットをサポートする統合Windows認証システムで動作します。SSOサポートは、オープンソースのHeimdalプロジェクトに基づいています。
iOS、iPadOS、およびmacOSでは以下の暗号化タイプがサポートされています。
AES-128-CTS-HMAC-SHA1-96
AES-256-CTS-HMAC-SHA1-96
DES3-CBC-SHA1
ARCFOUR-HMAC-MD5
SafariはSSOをサポートしています。また、標準のiOSおよびiPadOSネットワークAPIを使用する他社製アプリも、SSOを使用するように構成できます。SSOを設定するために、iOSおよびiPadOSは構成プロファイルペイロードをサポートしており、これによりモバイルデバイス管理(MDM)ソリューションが必要な設定をプッシュできます。これには、ユーザのプリンシパル名(Active Directoryユーザアカウント)の設定やKerberos領域設定、SSOの使用を許可するアプリとSafariのWeb URLの設定が含まれます。
拡張シングルサインオン
アプリデベロッパはSSO機能拡張を使って独自のシングルサインオンの実装を提供できます。SSO機能拡張は、ネイティブアプリまたはWebアプリでユーザ認証のために何らかのIDプロバイダを利用する必要がある場合に呼び出されます。デベロッパは、HTTPSへのリダイレクトと、Kerberosなどのチャレンジ/応答メカニズムの使用という2種類の機能拡張を提供できます。これによって、拡張シングルサインオンがOpenID、OAuth、SAML2、およびKerberosの認証スキームに対応します。また、SSO機能拡張は、ネイティブSSOプロトコルを採用することでmacOSの認証にも対応できます。このプロトコルは、macOSログイン中にSSOトークンの取得を可能とするものです。
アプリはシングルサインオン機能拡張を利用するために、AuthenticationServices APIを使用するか、オペレーティングシステムから提供されるURLインターセプションメカニズムに頼ることができます。WebKitとCFNetworkは、任意のネイティブアプリまたはWebKitアプリでシングルサインオンへのシームレスな対応を許可するインターセプションレイヤーを提供します。シングルサインオン機能拡張を呼び出すには、管理者から提供された構成がモバイルデバイス管理(MDM)プロファイルを介してインストールされている必要があります。さらに、リダイレクトタイプの機能拡張では関連ドメインペイロードを使用して、その機能拡張に対応するIDサーバに自らの存在が認識されていることを証明する必要があります。
オペレーティングシステムで提供されている機能拡張はKerberos SSO機能拡張のみです。