AppleAuth ist eine sehr einfache Bibliothek für .NET, die die Logik für die Kommunikation mit der REST-API von Apple für die Anmeldung bei Apple kapselt. Das Hauptziel besteht darin, die Implementierung von „Mit Apple anmelden“ für jede Webanwendung zu vereinfachen.
Um das Paket zu installieren, führen Sie den folgenden Befehl in Ihrer Paket-Manager-Konsole aus:
PM > Install - Package AppleAuth . NET
Oder installieren Sie das Paket alternativ einfach mit dem Nuget-Paketmanager. Das Projekt finden Sie hier: Link zu NuGet
Um „Mit Apple anmelden“ nutzen zu können, müssen Sie sich beim Apple Developer Program anmelden. Nachdem Sie sich für das Programm angemeldet haben, gehen Sie zur Entwicklerkonto-Hilfe und navigieren Sie zu App-Funktionen konfigurieren > Mit Apple anmelden. Dort finden Sie Informationen zur Konfiguration der Anmeldung mit Apple für Ihre App.
Weitere Informationen zum Festlegen der Einstellungen in Ihrem Entwicklerkonto zur Implementierung der Anmeldung mit Apple finden Sie auch in meinem Blogbeitrag.
Als Nächstes müssen Sie Ihre Webseite für „Mit Apple anmelden“ konfigurieren. Befolgen Sie die Richtlinien aus der offiziellen Dokumentation. Sie können auch auf diesen Link verweisen, um zu erfahren, wie Sie die Stile der Schaltflächen einrichten.
Wenn Sie Ihre App in einer Azure-Web-App bereitstellen, stellen Sie sicher, dass Sie die folgende Einstellung hinzufügen: WEBSITE_LOAD_USER_PROFILE = 1
, damit IIS auf den privaten Schlüsselspeicher im Benutzerkontospeicher zugreifen kann. Sie können dies über das Azure-Portal unter Konfiguration > Anwendungseinstellungen anwenden oder den folgenden Befehl in Cloud Shell ausführen:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_USER_PROFILE=1
.
Beachten Sie außerdem, dass diese Einstellung nur für nicht gemeinsam genutzte Preisstufen verfügbar ist.
Wenn Sie Ihre App auf Ihrem eigenen Webserver bereitstellen, auf dem Microsoft IIS ausgeführt wird, müssen Sie „Benutzerprofil laden“ unter „Erweiterte Einstellungen“ in Ihrem Anwendungspool aktivieren. Andernfalls erhalten Sie eine CryptographicException mit der Meldung „Das System kann die angegebene Datei nicht finden“.
AppleAuthProvider.cs
Erstellen Sie eine neue Instanz von AppleAuthProvider
, übergeben Sie die erforderlichen Parameter und schon kann es losgehen. Verwenden Sie die GetAuthorizationToken
-Methode, um ein Autorisierungstoken von Apple zu erhalten. Verwenden Sie die GetRefreshToken
-Methode, um zu überprüfen, ob ein Benutzer immer noch „Mit Apple anmelden“ verwendet, um sich bei Ihrem System anzumelden. Verwenden Sie die GetButtonHref
-Methode, um eine Abfragezeichenfolge für die Schaltfläche „Mit Apple anmelden“ abzurufen.
Nachdem der Benutzer auf Ihrer Seite auf die Schaltfläche „Mit Apple anmelden“ geklickt hat, wird er zu https://appleid.apple.com/ weitergeleitet. Nachdem sie ihre Anmeldeinformationen angegeben haben, sendet Apple eine POST-Anfrage an die URL, die Sie als Umleitungs-URL angegeben haben. Sie können die Anfrage mit InitialTokenResponse.cs
bearbeiten. Um ein Autorisierungstoken abzurufen, sollten Sie zunächst eine neue Instanz von AppleAuthProvider
mit den erforderlichen Parametern erstellen. Rufen Sie danach einfach die Methode GetAuthorizationToken() auf und übergeben Sie code
von Ihrem InitialTokenResponse
Objekt und Ihrem privaten Schlüssel. Hier ist eine Beispielimplementierung in C#:
[ HttpPost ]
public async Task HandleResponseFromApple ( AppleAuth . TokenObjects . InitialTokenResponse response )
{
string privateKey = System . IO . File . ReadAllText ( "path/to/file.p8" ) ;
AppleAuth . AppleAuthProvider provider = new AppleAuth . AppleAuthProvider ( "MyClientID" , "MyTeamID" , "MyKeyID" , "MyRedirectUrl" , "SomeState" ) ;
AppleAuth . TokenObjects . AuthorizationToken authorizationToken = await provider . GetAuthorizationToken ( response . code , privateKey ) ;
}
Beachten Sie, dass von Apple zurückgegebene Token nur von kurzer Dauer sind. Sie sollten daher mithilfe des zurückgegebenen AppleAuth.TokenObjects.AuthorizationToken
-Objekts eine Sitzung oder einen Benutzer in Ihrem System erstellen. Anschließend können Sie mithilfe von „Mit Apple anmelden“ überprüfen, ob der Benutzer noch angemeldet ist, indem Sie mit der GetRefreshToken
-Methode ein Aktualisierungstoken abrufen:
[ HttpPost ]
public async Task < bool > IsUserUsingAppleID ( )
{
string privateKey = System . IO . File . ReadAllText ( "path/to/file.p8" ) ;
AppleAuth . AppleAuthProvider provider = new AppleAuthProvider ( "MyClientID" , "MyTeamID" , "MyKeyID" , "https://myredirecturl.com/HandleResponseFromApple" , "SomeState" ) ;
AppleAuth . TokenObjects . AuthorizationToken refreshToken = await provider . GetRefreshToken ( authorizationToken . RefreshToken , privateKey ) ;
return refreshToken != null ;
}
Sie sind herzlich willkommen, zum Projekt beizutragen und es zu verbessern. Bitte achten Sie bei Ihren Beiträgen auf eine strikt professionelle, respektvolle und freundliche Haltung. Stellen Sie außerdem sicher, dass Sie den Eigentümern dieses Repositorys die Änderung, die Sie vornehmen möchten, per Issue oder auf andere Weise mitteilen.
Wir haben keine strengen Richtlinien für die Erstellung von Pull-Requests, Sie können jedoch den bereits bekannten GitHub-Flow für allgemeine Richtlinien verwenden.
Dieses Projekt ist unter der MIT-Lizenz lizenziert – Einzelheiten finden Sie unter LICENSE.md