0

Scénario: J'ai un service hébergé dans Azure. Le service héberge une base de données de questions. Je veux que mon application Android obtienne les données du service avec l'authentification d'application Web et non l'authentification déléguée. Fondamentalement, je ne veux pas que les utilisateurs se connectent.Authentification d'application Web pour Azure AD à l'aide d'Android ADAL

Recherche: J'ai beaucoup cherché et dans adal, aucune variante de acquiretoken ne prend un secret client pour le faire fonctionner. Sur .Net, la même chose peut être faite en utilisant ClientCredentials. La question la plus proche posée sur SO est Authenticate the user on Azure AD using ADAL library from Android native app.

La réponse ne précise pas comment l'atteindre.

Répondre

1

Les applications sur un téléphone mobile ou d'autres appareils Android sont public client applications (applications client natives). En tant que noted in the specification, les méthodes d'authentification client ne sont pas autorisées pour les clients publics. En termes simples, parce que les clients publics ne peuvent pas garder un client secret, en raison de la nature de l'endroit où le code vit et s'exécute, il ne peut pas non plus vraiment authentifier son identité client auprès d'AAD. Par exemple, une personne malveillante peut renifler le trafic Web d'un périphérique client natif exécutant votre application et le répliquer avec son propre code, en imitant votre application. Par conséquent, seules des méthodes d'authentification plus strictes peuvent être utilisées, comme l'authentification déléguée.

Si vous devez effectuer un service aux appels de service (appels d'application uniquement) entre deux services, ils doivent tous deux être des clients confidentiels. Techniquement, vous pourriez faire en sorte que votre application Android fonctionne comme un client confidentiel en enregistrant un identifiant d'application Web et un secret client, mais nos bibliothèques ne vous aideront pas à le faire. Vous devrez retourner aux sources et effectuer les appels HTTP vous-même pour acquérir un jeton.

+0

Je comprends que ADAL ne le fournit pas. Mais puisque Dot Net l'a et le mécanisme peut être utilisé pour les clients natifs, pourquoi ne pouvons-nous avoir la même fonctionnalité pour les clients Android et avant la décision de l'utiliser ou non pour le développeur en fonction de ses besoins. –

+0

Je pense que vous n'avez pas entièrement compris mon message. OAuth ne le permet pas. Période. Maintenant vous pouvez bien sûr utiliser OAuth incorrectement, et enregistrer les clients avec la mauvaise information, mais c'est à vous de faire ces erreurs. Nos bibliothèques vous permettront seulement de faire des choses qui sont supportées par OAuth. –

+0

à partir de la spécification; Le serveur d'autorisation ** PEUT ** établir une méthode d'authentification client avec des clients publics. IMHO J'ai bien compris votre message Shawn. et rien ne forme ma réponse donne une indication que je n'ai pas. La question est quand Adal donne la même capacité sur Dot Net, pourquoi pas pour Android. Et Oauth lui-même ne le désavoue pas. Il pourrait ne pas le recommander mais il ne l'interdit pas. –