0

Szenario: Ich habe einen Dienst in Azure gehostet. Der Dienst hostet eine Fragen-Datenbank. Ich möchte, dass meine Android-App die Daten vom Dienst mit der Webanwendungsauthentifizierung und nicht mit der delegierten Authentifizierung erhält. Grundsätzlich möchte ich nicht, dass Benutzer sich anmelden.Webanwendung-Authentifizierung für Azure AD mit Android ADAL

Forschung: Ich suchte viel und in adal, nimmt keine Variante von acquiretoken ein Client-Geheimnis, damit es funktioniert. Bei .Net kann dasselbe mit ClientCredentials durchgeführt werden. Die nächste Frage, die an SO gestellt wird, ist Authenticate the user on Azure AD using ADAL library from Android native app.

Die Antwort sagt nicht spezifisch, wie man es erreicht.

Antwort

1

Anwendungen auf einem Mobiltelefon oder anderen Android-Geräten sind public client applications (native Client-Anwendungen). Als noted in the specification sind Client-Authentifizierungsmethoden für öffentliche Clients nicht zulässig.

In einfachen Worten, da öffentliche Clients einen Client aufgrund der Art, in der der Code lebt und ausgeführt wird, nicht geheim halten können, kann er seine Client-Identität auch nicht wirklich gegenüber AAD authentifizieren. Ein ruchloser Benutzer könnte beispielsweise den Web-Verkehr eines nativen Client-Geräts ausspionieren, auf dem Ihre Anwendung ausgeführt wird, und diesen mit eigenem Code replizieren und Ihre App imitieren. Daher können nur strengere Authentifizierungsmethoden wie Delegated Authentication verwendet werden.

Wenn Sie Service-Anrufe (App-Anrufe) zwischen zwei Diensten tätigen müssen, müssen beide vertrauliche Clients sein. Technisch gesehen könnten Sie Ihre Android-App so einrichten, als ob es sich um einen vertraulichen Client handeln würde, indem Sie eine Web-App-ID und ein Client-Geheimnis registrieren, aber unsere Bibliotheken helfen Ihnen dabei nicht. Sie müssen zu den Roots zurückkehren und die HTTP-Aufrufe selbst durchführen, um ein Token zu erhalten.

+0

Ich verstehe ADAL bietet es nicht. Aber da Dot Net es hat und der Mechanismus auch für native Clients verwendet werden kann, warum können wir nicht die gleiche Funktionalität für android-Clients haben und die Entscheidung treffen, ob wir es für den Entwickler verwenden oder nicht, basierend auf seinen Bedürfnissen. –

+0

Ich glaube, Sie haben meinen Beitrag nicht ganz verstanden. OAuth erlaubt das nicht. Zeitraum. Jetzt können Sie OAuth natürlich falsch verwenden und Clients mit den falschen Informationen registrieren, aber es liegt an Ihnen, diese Fehler zu machen. Unsere Bibliotheken erlauben Ihnen nur Dinge zu tun, die von OAuth unterstützt werden. –

+0

aus der Spezifikation; Der Autorisierungsserver ** MAY ** richtet eine Clientauthentifizierungsmethode mit öffentlichen Clients ein. IMHO Ich verstand deinen Beitrag gut Shawn. und nichts aus meiner Antwort gibt einen Hinweis darauf, dass ich es nicht getan habe. Die Frage ist, wenn Adal die gleiche Fähigkeit auf Dot Net gibt, warum nicht für Android. Und Oauth selbst verbietet es nicht. Es könnte es nicht empfehlen, aber es verbietet es nicht. –

Verwandte Themen