Soumettre une application sur le compte d'un client
Smy
Membre
Bonjour
J'ai l'habitude de soumettre mes applis persos sur mon propre compte développeur, mais je rencontre au boulot un besoin un peu particulier.
Nous avons développé une appli pour le compte d'un client, et il souhaite qu'elle soit publiée sur son propre compte développeur.
Quelles sont les solutions pour cela ? Y en a t'il ici qui ont déjà rencontré ce problème ?
Le plus simple semble d'avoir les certificats/login/password du compte du client, mais ce n'est pas le plus propre. Est-il possible de soumettre depuis un second user ajouté au compte, ou seul l'admin peut-il le faire ? En cherchant, j'ai cru comprendre qu'il était aussi possible que le client re-signe l'application à la soumission avec ses propres clés, est-ce envisageable ?
Merci
J'ai l'habitude de soumettre mes applis persos sur mon propre compte développeur, mais je rencontre au boulot un besoin un peu particulier.
Nous avons développé une appli pour le compte d'un client, et il souhaite qu'elle soit publiée sur son propre compte développeur.
Quelles sont les solutions pour cela ? Y en a t'il ici qui ont déjà rencontré ce problème ?
Le plus simple semble d'avoir les certificats/login/password du compte du client, mais ce n'est pas le plus propre. Est-il possible de soumettre depuis un second user ajouté au compte, ou seul l'admin peut-il le faire ? En cherchant, j'ai cru comprendre qu'il était aussi possible que le client re-signe l'application à la soumission avec ses propres clés, est-ce envisageable ?
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Individual, pas le choix, il te faut ses credentials pour publier.
Si il a un compte Company, il peut t'inviter à rejoindre l'équipe dans le Member Center. Il devra aussi t'ajouter d'en iTunes Connect. Tu pourras ainsi créer les appIDs, les provisionning et créer l'app.
Tu peux même faire parti de plusieurs équipes avec la même adresse mail, mais attention, uniquement sur le developer portal, iTunes Connect ça merdouille de ce côté je crois.
Merci. Je vais voir avec mon client...
Il ne peut en générer une lui-même puis faire un certificat de distribution. C'est une sacré limitation !
Mais il suffit que le Mac qui a créé la clé privée la file...
S'pareil quand tu changes de Mac, il faut soit sauvegarder cette clé, soit en refaire une...
C'est bien ça, export du .p12 du mac du client. C'est un peu naze pour une question de sécurité, je trouve...
Le client pour lequel je travaille ne possédait pas cette clé, c'était celui qui était à mon poste auparavant. Et il a fallu la recréer...
Ca serait une faille de sécurité que de pouvoir la récupérer du coup, puisque comme son nom l'indique elle est sensée être privée, et personne d'autre que toi n'a besoin de la connaà®tre car sinon il pourrait générer des projets et signer du code en ton nom.
Par contre c'est un beau problème de sécurité que le seul moyen de générer une application pour un client soit de lui demander sa clé privée. Mais en même temps c'est logique car niveau sécurité si on veut bien faire les choses :
* soit on signe avec notre clé et on prend la responsabilité, en disant "oui c'est moi entreprise machin qui me déclare l'auteur de ce code -- et donc si vous découvrez qu'il y a du code malveillant dedans c'est moi qu'il faudra blamer et exclure du Dev Program etc"
* soit le client signe avec sa propre clé et engage sa responsabilité, mais dans ces cas-là c'est logique que ce soit à lui de faire la procédure de signature.
Avec les clés numériques, il n'y a pas de notion de "procuration". Et c'est là le coeur du problème. Faudrait que le prestataire puisse signer avec la clé du client mais sans la connaà®tre (ce qui n'est pas logique) pour ne pas pouvoir ensuite signer un peu tout et n'importe quel autre projet avec cette clé et se faire passer pour ledit client. Ou que le client puisse signer le code du prestataire (ça ça serait plus logique), ce qui est ce qu'on est sensé faire, mais en pratique le client n'a pas envie d'essayer d'y comprendre qqch et demande qu'on se démerde pour signer le code à sa place.
Le plus simple serait qu'il puisse y avoir un certificat Distribution par membre de la team. Du coup quand le client accepte le développeur dans la team, il en connait/accepte les contraintes.
Sinon, il faudrait qu'un client puisse re-signer une appli avant de la soumettre lui même. Le développeur n'aurait alors qu'à compiler/archiver (avec une clé/un certificat temporaire).
Quand tu fais compiles et fait une Archive Xcode, au moment ensuite de la distribuer (pour AppStore ou en OTA) en cliquant sur le bouton "Distribute" de l'Organizer, il te propose par défaut de resigner ton application avec le certificat de ton choix (tu peux aussi choisir "Don't Re-sign" si tu veux pas resigner avec une signature différente). Et c'est clair que c'est effectivement LA solution qu'il faut appliquer.
Mais en pratique, il faut pour cela que le client ait Xcode d'installé sur sa machine, pour que le prestataire puisse lui fournisse directement l'archive et qu'il la fasse glisser dans Xcode et pour faire la distribution (OTA ou AppStore) avec son propre certificat. En pratique, le client n'y comprend rien à ces histoires de signature (pourtant c'est très important, et le principe est bien moins compliqué qu'il n'y parait, c'est comme signer un document papier et prendre ainsi la responsabilité d'indiquer que tu approuves son contenu) et ne veux pas installer Xcode et faire cette procédure de resignature.
Merci, merci, merci !
Pour mon client c'est la solution je pense. Du coup quand tu compiles et archive coté développeur, tu signes avec quoi ?
Mais par contre, je n'ai jamais testé/essayé cette solution, j'ai juste vu que c'était possible mais jamais eu l'opportunité de le mettre en pratique. Donc si tu essayes je suis preneur de retours d'expérience !
Bien sur !
Je viens de tester et impossible de re-signer, j'ai une erreur. C'est faisable sur n'importe quel compte pour tester :
- Modifier un projet pour changer le Code Signing Identity de la Distribution sur autre chose que le certificat de distribution
- Archiver
- Organizer / Distribute / Submit to the iOS App Store
- Sélection de la signature (le vrai certificat cette fois ci)
- Message d'erreur "Application failed codesign verification. The signature was invalid, contains disallowed entitlements, or it was not signed with an iPhone Distribution Certificate"
J'ai des doutes sur la re-signature en fait. Il se comporte comme s'il ne faisait pas plus que valider.
Genre ton certificat de distribution perso pour la compilation, et le certification de distribution du client pour le re-sign à la distribution...
Ca vaut le coup de tester je pense.
Je remonte le sujet pour une petite précision.
Le client peut-il avoir juste un compte dans iTunes connect ou également un compte développeur pour accéder au member center (d'où on accède également à iTunes connect)
Le fait que le client ait payé sa licence suffit finalement pour que le développeur puisse publier pour lui (logiquement cela devrait être ainsi puisque c'est lui qui "vend" l'app au final) ou est-ce au développeur de repayer ? Si avec la même adresse mail on a 2 clients comment cela fonctionne (certificats, etc.)?
De ce que je comprends (ou dans ma logique, au choix) :
- le client doit avoir un compte développeur : https://developer.apple.com
- de la il a accès au member program et peut gérer son équipe (il pouvoir aussi ajouter via iTunes connect) il donne votre adresse email (disons pas celle de votre compte développeur que vous utilisez pour d'autres applications) pour vous ajouter en tant que dev.
- vous pouvez ensuite vous connecter au member program et générer les certificats de développement et de distribution que l'on peut importer dans Xcode via organizer / Devices / Teams. Créer l'appID, le build identifier.
- Dans iTunes connect on peut créer l'app, uploader les screenshots, télécharger les crash logs, etc.
- pour le build on peut alors choisir dans les build settings du projet le code signing identity qui va bien
- lorsqu'on a fait une archive on peut la distribuer via le menu archives de l'organizer / "distribute" Xcode ne risque pas de s'emmeler les pinceaux puisqu'il a l'app identifier et qu'elle doit correspondre à celle créée dans le provisionning portal.
me suis-je trompé quelque part ? Du coup, si on donne la même adresse email à 2 clients doit-on choisir pour le compte de quel client on se connecte lors de la connexion au provisionning portal / iTunes connect.
Tout ceci n'est pas très clair pour moi, j'ai parfois tendance à mélanger les choses. Si quelqu'un pouvait confirmer ou m'éclaircir les idées, ce serait sympa.