Passpoint est un Wi-Fi Alliance (WFA) qui permet aux appareils mobiles de détecter le Wi-Fi et de s'y authentifier qui fournissent un accès à Internet.
Assistance relative aux appareils
Pour assurer la compatibilité avec Passpoint, les fabricants d'appareils doivent implémenter
l’interface du demandeur. À partir d'Android 13,
l'interface utilise AIDL pour la définition HAL.
Pour les versions antérieures à Android 13,
et les partitions de fournisseurs utilisent HIDL.
Les fichiers HIDL se trouvent dans hardware/interfaces/supplicant/1.x
et les fichiers AIDL sont dans hardware/interfaces/supplicant/aidl
.
Le suppliant fournit
un soutien pour
la norme 802.11u, en particulier
des fonctionnalités de découverte et de sélection réseau telles que le service de publicité générique.
(GAS) et le protocole de requête réseau d'accès (ANQP).
Implémentation
Android 11 ou version ultérieure
Pour prendre en charge Passpoint sur les appareils équipés d'Android 11 ou version ultérieure, procédez comme suit : les fabricants d’appareils doivent fournir une prise en charge du micrologiciel pour la norme 802.11u. Toutes les autres exigences liées à la prise en charge de Passpoint sont incluses dans l'AOSP.
Android 10 ou version antérieure
Pour les appareils équipés d'Android 10 ou version antérieure, les fabricants doivent fournir la compatibilité avec le framework et HAL/micrologiciel:
- Framework: Activer Passpoint (nécessite un flag de fonctionnalité)
- Micrologiciel: prise en charge de la norme 802.11u
Pour utiliser Passpoint, implémentez le Wi-Fi HAL et activez le flag de fonctionnalité pour
Passpoint. Dans le fichier device.mk
situé dans device/<oem>/<device>
, modifiez le
la variable d'environnement PRODUCT_COPY_FILES
pour inclure la compatibilité avec
Fonctionnalité Passpoint:
PRODUCT_COPY_FILES +=
frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml
Toutes les autres exigences liées à la prise en charge de Passpoint sont incluses dans l'AOSP.
Validation
Pour valider votre implémentation de la fonctionnalité Passpoint, exécutez la commande suivante : Tests unitaires du package Passpoint:
Tests du service:
atest com.android.server.wifi.hotspot2
Tests du responsable:
atest android.net.wifi.hotspot2
Provisionnement Passpoint R1
Android est compatible avec Passpoint R1 depuis Android 6.0, ce qui permet de provisionner d'identifiants Passpoint R1 (version 1) via le téléchargement sur le Web d'un contenant les informations de profil et d'identification. Le client lance automatiquement un programme d’installation spécial pour les informations Wi-Fi et autorise l'utilisateur de consulter une partie des informations avant d'accepter ou de refuser contenus.
Les informations de profil contenues dans le fichier sont utilisées pour établir une correspondance avec les données récupérés à partir de points d'accès compatibles avec Passpoint, et les identifiants sont automatiquement appliqué à tous les réseaux correspondants.
L'implémentation de référence Android prend en charge EAP-TTLS, EAP-TLS, EAP-SIM, EAP-AKA et EAP-AKA.
Mécanisme de téléchargement
Le fichier de configuration Passpoint doit être hébergé sur un serveur Web et doit être protégé par TLS (HTTPS), car il peut contenir un mot de passe en texte clair ou données de clé privée. Le contenu est constitué de texte MIME en plusieurs parties encapsulé. représentées en UTF-8 et encodées en base64 conformément à la section 6.8 du document RFC-2045.
Les champs d'en-tête HTTP suivants permettent au client de lancer automatiquement un programme d'installation Wi-Fi sur l'appareil:
Content-Type
doit être défini surapplication/x-wifi-config
.Content-Transfer-Encoding
doit être défini surbase64
.Content-Disposition
ne doit pas être défini.
La méthode HTTP utilisée pour récupérer le fichier doit être GET. Chaque fois qu'une requête HTTP GET le navigateur reçoit une réponse avec ces en-têtes MIME, l'application d'installation est pour commencer. Le téléchargement doit être déclenché en appuyant sur un élément HTML tel qu'un (les redirections automatiques vers une URL de téléchargement ne sont pas acceptées). Ce comportement est spécifique à Google Chrome ; d'autres navigateurs Web peuvent offrir ou non de Google Cloud.
Composition de fichiers
Le contenu encodé en base64 doit être constitué de contenu MIME comportant plusieurs parties avec une chaîne
Content-Type
sur multipart/mixed
. Les parties suivantes constituent
d'un contenu en plusieurs parties.
Pièce | Content-Type (moins de guillemets) | Obligatoire | Description |
---|---|---|---|
Profil |
application/x-passpoint-profile
|
Toujours | Charge utile au format OMA-DM SyncML contenant le Passpoint R1
Objectif marketing mis en forme PerProviderSubscription pour HomeSP
et Credential . |
Certificat de confiance |
application/x-x509-ca-cert
|
Obligatoire pour EAP-TLS et EAP-TTLS | Une seule charge utile de certificat encodée en base64 X.509v3. |
Clé EAP-TLS |
application/x-pkcs12
|
Obligatoire pour EAP-TLS | Structure ASN.1 PKCS #12 encodée en base64 contenant un certificat client avec au moins le certificat client et la clé privée associée. Le conteneur PKCS 12, la clé privée et les certificats doivent le tout en texte clair sans mot de passe. |
La section "Profile" (Profil) doit être transférée au format XML encodé en base64 et en UTF-8.
qui spécifie des parties des sous-arborescences HomeSP
et Credential
dans le
Spécification technique Passpoint R2 version 1.0.0, section 9.1.
Le nœud de niveau supérieur doit être MgmtTree
et le sous-nœud immédiat doit être
PerProviderSubscription
Un exemple de fichier XML apparaît dans
Exemple de profil XML OMA-DM.
Les nœuds de sous-arborescence suivants sont utilisés sous HomeSP
:
FriendlyName
: doit être défini. utilisé comme texte à afficherFQDN
: obligatoireRoamingConsortiumOI
Les nœuds de sous-arborescence suivants sont utilisés sous Credential
:
Realm
: doit être une chaîne non videUsernamePassword
: obligatoire pour EAP-TTLS avec les nœuds suivants définis:Username
: chaîne contenant le nom d'utilisateurPassword
: chaîne encodée en base64 (définie surcGFzc3dvcmQ=
, le chaîne encodée en base64 pour "password", dans l'exemple ci-dessous).EAPMethod/EAPType
: doit être défini sur21
.EAPMethod/InnerMethod
: doit être défini surPAP
,CHAP
,MS-CHAP
, ouMS-CHAP-V2
DigitalCertificate
: obligatoire pour EAP-TLS. Vous devez définir les nœuds suivants:CertificateType
défini surx509v3
CertSHA256Fingerprint
défini sur le condensé SHA-256 correct du client certificat dans la section MIME de la clé EAP-TLS
SIM
: requis pour EAP-SIM, EAP-AKA et EAP-AKA. Le champEAPType
doit doit être défini sur le type EAP approprié etIMSI
doit correspondre à un IMSI de l'un des les cartes SIM installées dans l’appareil au moment du provisionnement. L'IMSI peut être entièrement constituée de chiffres décimaux afin de forcer l'égalité complète. ou de 5 ou 6 chiffres décimaux suivis d'un astérisque (*) pour assouplir la correspondance IMSI à MCC/MNC uniquement. Par exemple, la chaîne IMSI 123456* correspond à n'importe quelle carte SIM ayant le numéro MCC 123 et le MNC comme 456.
Android 11 offre des fonctionnalités rendent le provisionnement de Passpoint R1 plus flexible.
- Nom de domaine distinct pour l'authentification, l'autorisation et la traçabilité (AAA)
Administrateurs réseau Passpoint nécessitant un nom de domaine AAA spécifié indépendamment du nom de domaine complet annoncé par le réseau via le protocole ANQP (Access Network Query Protocol) peut spécifier un de noms de domaine complets délimités par des points-virgules dans un nouveau nœud sous la sous-arborescence
Extension
. Il s'agit d'un nœud facultatif. Les appareils exécutant Android les versions 10 et antérieures ignorent ce nœud.
Android
: sous-arborescence des extensions AndroidAAAServerTrustedNames
: obligatoire pour les noms de confiance des serveurs AAA avec les nœuds suivants définis:FQDN
: chaîne contenant les noms de confiance du serveur AAA. Utilisez des points-virgules pour séparer les noms de confiance. Par exemple,example.org;example.com
.
- Autorités de certification racine privées autosignées
- Administrateurs réseau Passpoint qui gèrent leurs certificats en interne peut provisionner des profils avec une autorité de certification privée autosignée pour l'authentification AAA.
- Autoriser l'installation de profils sans certificat CA racine
- Le certificat CA racine associé au profil est utilisé pour AAA l'authentification du serveur. Les administrateurs réseau Passpoint qui souhaitent s'appuyer sur d'autorités de certification racines publiques et approuvées pour l'authentification de leur serveur AAA peuvent provisionner sans certificat CA racine. Dans ce cas, le système vérifie les certificats de serveur AAA aux certificats CA racine publics installés dans le magasin de confiance.
Provisionnement Passpoint R2
Android 10 est désormais compatible avec Passpoint R2. caractéristiques. Passpoint R2 implémente l'inscription en ligne (OSU), une méthode standard pour de provisionner de nouveaux profils Passpoint. Android 10 ou version ultérieure prend en charge le provisionnement de profils EAP-TTLS à l'aide du protocole SOAP-XML sur ouvrez OSU ESS.
Les fonctionnalités Passpoint R2 prises en charge ne nécessitent que le code de référence AOSP. (aucune compatibilité supplémentaire avec les pilotes ou les micrologiciels n'est requise). Le code de référence AOSP inclut également une implémentation par défaut de l'interface utilisateur de Passpoint R2 dans les paramètres. l'application.
Lorsqu'Android détecte un point d'accès Passpoint R2, le framework Android:
- Affiche une liste des fournisseurs de services annoncés par le point d'accès dans le réseau Wi-Fi sélecteur (en plus d'afficher les SSID).
- Invite l'utilisateur à appuyer sur l'un des fournisseurs de services pour configurer un Passpoint profil.
- Guide l'utilisateur tout au long du processus de configuration du profil Passpoint.
- Installe le profil Passpoint obtenu en cas de réussite de l'opération.
- S'associe au réseau Passpoint à l'aide du nouveau Passpoint provisionné profil.
Fonctionnalités de Passpoint R3
Android 12 introduit les fonctionnalités suivantes : Passpoint R3 qui améliorent l'expérience utilisateur et permettent aux réseaux législations locales:
- Conditions d'utilisation
L'acceptation des conditions d'utilisation est légalement obligatoire dans certains pays et des lieux pour fournir un accès au réseau. Cette fonctionnalité permet aux déploiements réseau remplacer les portails captifs non sécurisés, qui utilisent des réseaux ouverts, avec un système Réseau Passpoint. Une notification s'affiche à l'attention de l'utilisateur lorsque les conditions d'utilisation et conditions pour être acceptées.
L'URL des conditions d'utilisation doit rediriger vers un site Web sécurisé via HTTPS. Si l'URL pointe vers un site Web non sécurisé, le framework déconnecte et bloque le réseau.
- URL des informations sur le lieu
Permet aux opérateurs réseau et aux sites de fournir des informations supplémentaires à l'utilisateur, telles que des plans d'établissements, des annuaires, promotions et bons de réduction. Une notification s'affiche lorsque l'utilisateur est connecté.
L'URL des informations sur l'établissement doit pointer vers un site Web sécurisé via HTTPS. Si l'URL pointe vers un site Web non sécurisé, le framework ignore l'URL et n'affiche pas de notification.
Autres fonctionnalités Passpoint
Android 11 introduit les fonctionnalités suivantes : Passpoint des fonctionnalités qui améliorent l'expérience utilisateur, la consommation d'énergie et le déploiement la flexibilité.
- Application des dates d'expiration et notification
- L'application de dates d'expiration aux profils permet au cadre d'éviter la connexion automatique aux points d'accès dont les identifiants ont expiré, qui sont risquant d'échouer. Cela évite d'utiliser le temps d'accès, et permet d'économiser la batterie et le backend. la bande passante réseau. Le framework affiche une notification à l'utilisateur lorsqu'un réseau correspondant à son profil est dans la plage, et le profil a expiré.
- Plusieurs profils avec un nom de domaine complet identique
- Opérateurs qui déploient des réseaux Passpoint et utilisent plusieurs appareils mobiles terrestres publics (PLMN) peuvent provisionner plusieurs profils Passpoint avec le même nom de domaine complet, un pour chaque ID PLMN, qui est automatiquement mis en correspondance avec le installée et utilisée pour connecter le réseau.
Android 12 introduit les fonctionnalités suivantes : Passpoint des fonctionnalités qui améliorent l'expérience utilisateur, la consommation d'énergie et le déploiement flexibilité:
- Préfixe d'identité décoré
- Lors de l'authentification auprès de réseaux avec une décoration de préfixe, les rôles le préfixe d'identité permet aux opérateurs réseau de mettre à jour Identifiant (NAI) permettant d'effectuer un routage explicite via plusieurs proxys internes d'un réseau AAA (voir RFC 7542). Android 12 implémente cette fonctionnalité. conformément aux Spécification WBA pour les extensions PPS-MO
- Gestion imminente de la désauthentification
- Permet aux opérateurs réseau de signaler à un appareil que le service n'est pas disponible pour l’identifiant utilisé pour s’authentifier sur le réseau pour une certaine (spécifiée via un délai avant expiration). Après avoir reçu ce signal, les appareils ne tenteront pas de se reconnecter au réseau avec les mêmes identifiants avant l'expiration du délai. En revanche, les appareils prendre en charge cette fonctionnalité peut tenter de se reconnecter au réseau à plusieurs reprises tant que le service est indisponible.
Exemples de profils XML OMA-DM PerProviderSubscription-MO
Profil avec identifiants de nom d'utilisateur/mot de passe (EAP-TTLS)
L'exemple suivant illustre un profil pour un réseau avec:
- Nom de compatibilité réseau défini sur
Example Network
- Nom de domaine complet défini sur
hotspot.example.net
- OI du consortium en itinérance (pour l'itinérance)
- Identifiant avec le nom d'utilisateur
user
, le mot de passepassword
encodé en Base64 et domaine défini surexample.net
- Méthode EAP définie sur
21
(EAP-TTLS) - Méthode interne de la phase 2 définie sur
MS-CHAP-V2
- Autres noms de domaine AAA définis sur
trusted.com
ettrusted.net
<MgmtTree xmlns="syncml:dmddf1.2">
<VerDTD>1.2</VerDTD>
<Node>
<NodeName>PerProviderSubscription</NodeName>
<RTProperties>
<Type>
<DDFName>urn:wfa:mo:hotspot2dot0-perprovidersubscription:1.0</DDFName>
</Type>
</RTProperties>
<Node>
<NodeName>i001</NodeName>
<Node>
<NodeName>HomeSP</NodeName>
<Node>
<NodeName>FriendlyName</NodeName>
<Value>Example Network</Value>
</Node>
<Node>
<NodeName>FQDN</NodeName>
<Value>hotspot.example.net</Value>
</Node>
<Node>
<NodeName>RoamingConsortiumOI</NodeName>
<Value>112233,445566</Value>
</Node>
</Node>
<Node>
<NodeName>Credential</NodeName>
<Node>
<NodeName>Realm</NodeName>
<Value>example.net</Value>
</Node>
<Node>
<NodeName>UsernamePassword</NodeName>
<Node>
<NodeName>Username</NodeName>
<Value>user</Value>
</Node>
<Node>
<NodeName>Password</NodeName>
<Value>cGFzc3dvcmQ=</Value>
</Node>
<Node>
<NodeName>EAPMethod</NodeName>
<Node>
<NodeName>EAPType</NodeName>
<Value>21</Value>
</Node>
<Node>
<NodeName>InnerMethod</NodeName>
<Value>MS-CHAP-V2</Value>
</Node>
</Node>
</Node>
</Node>
<Node>
<NodeName>Extension</NodeName>
<Node>
<NodeName>Android</NodeName>
<Node>
<NodeName>AAAServerTrustedNames</NodeName>
<Node>
<NodeName>FQDN</NodeName>
<Value>trusted.com;trusted.net</Value>
</Node>
</Node>
</Node>
</Node>
</Node>
</Node>
</MgmtTree>
Profil avec un certificat numérique (EAP-TLS)
L'exemple suivant illustre un profil pour un réseau avec:
- Nom de compatibilité réseau défini sur
GlobalRoaming
- Nom de domaine complet défini sur
globalroaming.net
- OI du consortium en itinérance (pour l'itinérance)
- Domaine défini sur
users.globalroaming.net
- Justificatif d'identité avec un certificat numérique portant l'empreinte spécifiée
<MgmtTree xmlns="syncml:dmddf1.2">
<VerDTD>1.2</VerDTD>
<Node>
<NodeName>PerProviderSubscription</NodeName>
<RTProperties>
<Type>
<DDFName>urn:wfa:mo:hotspot2dot0-perprovidersubscription:1.0</DDFName>
</Type>
</RTProperties>
<Node>
<NodeName>i001</NodeName>
<Node>
<NodeName>HomeSP</NodeName>
<Node>
<NodeName>FriendlyName</NodeName>
<Value>GlobalRoaming</Value>
</Node>
<Node>
<NodeName>FQDN</NodeName>
<Value>globalroaming.net</Value>
</Node>
<Node>
<NodeName>RoamingConsortiumOI</NodeName>
<Value>FFEEDDCC0,FFEEDDCC1,009999,008888</Value>
</Node>
</Node>
<Node>
<NodeName>Credential</NodeName>
<Node>
<NodeName>Realm</NodeName>
<Value>users.globalroaming.net</Value>
</Node>
<Node>
<NodeName>DigitalCertificate</NodeName>
<Node>
<NodeName>CertificateType</NodeName>
<Value>x509v3</Value>
</Node>
<Node>
<NodeName>CertSHA256Fingerprint</NodeName>
<Value>0ef08a3d2118700474ca51fa25dc5e6d3d63d779aaad8238b608a853761da533</Value>
</Node>
</Node>
</Node>
</Node>
</Node>
</MgmtTree>
Profil avec des identifiants SIM (EAP-AKA)
L'exemple suivant illustre un profil pour un réseau avec:
- Nom de compatibilité réseau défini sur
Purple Passpoint
- Nom de domaine complet défini sur
wlan.mnc888.mcc999.3gppnetwork.org
- Identifiant de la carte SIM avec l'ID PLMN de
999888
- Méthode EAP définie sur
23
(EAP-AKA)
<MgmtTree xmlns="syncml:dmddf1.2">
<VerDTD>1.2</VerDTD>
<Node>
<NodeName>PerProviderSubscription</NodeName>
<RTProperties>
<Type>
<DDFName>urn:wfa:mo:hotspot2dot0-perprovidersubscription:1.0</DDFName>
</Type>
</RTProperties>
<Node>
<NodeName>i001</NodeName>
<Node>
<NodeName>HomeSP</NodeName>
<Node>
<NodeName>FriendlyName</NodeName>
<Value>Purple Passpoint</Value>
</Node>
<Node>
<NodeName>FQDN</NodeName>
<Value>purplewifi.com</Value>
</Node>
</Node>
<Node>
<NodeName>Credential</NodeName>
<Node>
<NodeName>Realm</NodeName>
<Value>wlan.mnc888.mcc999.3gppnetwork.org</Value>
</Node>
<Node>
<NodeName>SIM</NodeName>
<Node>
<NodeName>IMSI</NodeName>
<Value>999888*</Value>
</Node>
<Node>
<NodeName>EAPType</NodeName>
<Value>23</Value>
</Node>
</Node>
</Node>
</Node>
</Node>
</MgmtTree>
Avis Auth
Appareils fonctionnant sous Android 8.x ou Android 9 et dotés d'une carte Passpoint R1 EAP-SIM, EAP-AKA ou "EAP-AKA" ne se connecte pas automatiquement au réseau Passpoint. Ce affecte les utilisateurs, les opérateurs et les services en réduisant le déchargement Wi-Fi.
Segment | Conséquences | L'ampleur de l'impact |
---|---|---|
Opérateurs et fournisseurs de services Passpoint | Charge plus importante sur le réseau mobile. | Tout opérateur utilisant Passpoint R1. |
Utilisateurs | Opportunité manquée de connexion automatique aux points d'accès Wi-Fi de l'opérateur ce qui entraîne des coûts de données plus élevés. | Tout utilisateur possédant un appareil fonctionnant sur un réseau d'opérateur prenant en charge Passpoint R1. |
Cause de l'échec
Passpoint spécifie un mécanisme permettant de mettre en correspondance un fournisseur de services annoncé (ANQP) à un profil installé sur l'appareil. Les règles de correspondance suivantes pour EAP-SIM, EAP-AKA et EAP-AKA Il s'agit d'un ensemble partiel de règles EAP-SIM/AKA/AKA échecs:
If the FQDN (Fully Qualified Domain Name) matches
then the service is a Home Service Provider.
Else: If the PLMN ID (3GPP Network) matches
then the service is a Roaming Service Provider.
Le deuxième critère a été modifié dans Android 8.0:
Else: If the PLMN ID (3GPP Network) matches AND the NAI Realm matches
then the service is a Roaming Service Provider.
Avec cette modification, le système n'a observé aucune correspondance des fournisseurs de services opérationnels, les appareils Passpoint ne se connectaient donc pas automatiquement.
Solutions de contournement
Pour contourner le problème des critères de correspondance modifiés, les opérateurs et les fournisseurs de services doivent ajouter le domaine les informations publiées par le point d'accès Passpoint.
La solution recommandée est que les fournisseurs de services réseau implémentent un côté réseau pour accélérer le déploiement. Côté appareil la solution dépend du fait que les OEM récupèrent une liste de modifications auprès d'AOSP, puis des appareils sur le terrain.
Correction du problème réseau pour les opérateurs et les fournisseurs de services Passpoint
La solution côté réseau nécessite de reconfigurer le réseau pour ajouter la NAI domaine ANQP comme spécifié ci-dessous. Les spécifications Passpoint ne l'élément ANQP du domaine de la NAI, mais l'ajout de cette propriété est conforme aux spécifications Passpoint, ce qui signifie que le client est conforme aux spécifications. les implémentations ne doivent pas s'interrompre.
- Ajoutez l'élément ANQP du domaine NAI.
- Définir le sous-champ du domaine NAI afin qu'il corresponde au
Realm
du profil installé sur l'appareil. Définissez les informations suivantes en fonction de chaque type d'EAP:
- EAP-TTLS:définissez
EAPMethod(21)
et les types d'authentification interne compatibles (PAP
,CHAP
,MS-CHAP
ouMS-CHAP-V2
) - EAP-TLS:définir
EAPMethod(13)
- EAP-SIM:définir
EAPMethod(18)
- EAP-AKA:définissez
EAPMethod(23)
- EAP-AKA' : définir
EAPMethod(50)
- EAP-TTLS:définissez
Correction de l'appareil/AOSP pour les OEM
Pour implémenter une solution de contournement côté appareil, les OEM doivent choisir la CL de correctif aosp/718508. Ce correctif peut être appliqué aux versions suivantes (ne concerne pas Android 10 ou version ultérieure):
- Android 9
- Android 8.x
Lorsque le correctif est récupéré, les OEM doivent mettre à jour les appareils sur le terrain.