Uwierzytelnianie i autoryzacja w usłudze Azure App Service dla aplikacji mobilnych

W tym artykule opisano sposób działania uwierzytelniania i autoryzacji podczas tworzenia natywnych aplikacji mobilnych przy użyciu zaplecza usługi App Service. Usługa App Service zapewnia zintegrowane uwierzytelnianie i autoryzację, dzięki czemu aplikacje mobilne mogą logować użytkowników bez konieczności zmieniania kodu w usłudze App Service. Zapewnia łatwy sposób ochrony aplikacji i pracy z danymi poszczególnych użytkowników.

Ostrzeżenie

W tym artykule opisano 4.2.0 zestawu SDK klienta usługi Azure Mobile Apps. W bieżącej wersji jest używany nowy mechanizm uwierzytelniania i nie obsługuje aplikacja systemu Azure uwierzytelniania i autoryzacji usługi w taki sam sposób.

Aby uzyskać informacje na temat sposobu działania uwierzytelniania i autoryzacji w usłudze App Service, zobacz Uwierzytelnianie i autoryzacja w usłudze aplikacja systemu Azure Service.

Uwierzytelnianie przy użyciu zestawu SDK dostawcy

Po skonfigurowaniu wszystkiego w usłudze App Service można modyfikować klientów mobilnych, aby logować się za pomocą usługi App Service. W tym miejscu istnieją dwa podejścia:

  • Użyj zestawu SDK publikowanego przez danego dostawcę tożsamości, aby ustanowić tożsamość, a następnie uzyskać dostęp do usługi App Service.
  • Użyj jednego wiersza kodu, aby zestaw SDK klienta usługi Mobile Apps mógł logować użytkowników.

Napiwek

Większość aplikacji powinna używać zestawu SDK dostawcy, aby uzyskać bardziej spójne środowisko podczas logowania użytkowników, aby korzystać z obsługi odświeżania tokenów i uzyskać inne korzyści określone przez dostawcę.

W przypadku korzystania z zestawu SDK dostawcy użytkownicy mogą logować się do środowiska, które integruje się ściślej z systemem operacyjnym, na którym działa aplikacja. Ta metoda udostępnia również token dostawcy i niektóre informacje o użytkowniku na kliencie, co znacznie ułatwia korzystanie z interfejsów API grafu i dostosowywanie środowiska użytkownika. Ta metoda jest znana jako "przepływ klienta" lub "przepływ skierowany przez klienta", ponieważ kod na kliencie loguje użytkowników.

Po uzyskaniu tokenu dostawcy należy wysłać go do usługi App Service w celu weryfikacji. usługa aplikacja systemu Azure sprawdza poprawność tokenu. Następnie usługa tworzy nowy token dla klienta. Zestaw SDK klienta usługi Mobile Apps ma metody pomocnicze do zarządzania tą wymianą i automatycznie dołączają token do wszystkich żądań do zaplecza aplikacji. Możesz również zachować odwołanie do tokenu dostawcy.

Uwaga

Niektóre platformy, takie jak Windows (WPF), będą działać tylko z przepływem kierowanym przez klienta. Inne będą działać równie dobrze zarówno z przepływem serwera, jak i klienta. Jeśli platforma działa tylko z przepływem kierowanym przez klienta, zostanie wyświetlony przewodnik Szybki start.

Aby uzyskać więcej informacji na temat przepływu uwierzytelniania, zobacz Przepływ uwierzytelniania usługi App Service.

Uwierzytelnianie bez zestawu SDK dostawcy

Jeśli nie chcesz konfigurować zestawu SDK dostawcy, możesz zezwolić usłudze aplikacja systemu Azure na obsługę logowania. Zestaw SDK klienta usługi Azure Mobile Apps otworzy widok internetowy dla wybranego dostawcy i zaloguje użytkownika. Ta metoda jest nazywana "przepływem serwera" lub "przepływem kierowanym przez serwer", ponieważ serwer zarządza procesem, który loguje użytkowników. Zestaw SDK klienta nigdy nie otrzymuje tokenu dostawcy.

Przesyłanie tokenu z przepływu kierowanego przez klienta

W przypadku korzystania z przepływu kierowanego przez klienta należy najpierw uzyskać odpowiednie informacje, które aplikacja systemu Azure Service muszą zweryfikować token. W większości przypadków token będzie tokenem dostępu. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją usługi aplikacja systemu Azure Service.

Następnie można skompilować odpowiedni obiekt JSON. Jeśli na przykład używasz biblioteki MSAL do wykonywania przepływu kierowanego przez klienta na platformie .NET w aplikacji WPF, możesz użyć następującego kodu:

var requestBody = new JObject(new JProperty("access_token", authResult.AccessToken));
var userInfo = await mobileClient.login("aad", requestBody);

Treść żądania musi odpowiadać oczekiwaniom określonym w dokumentacji.