Jak używać zestawu SDK platformy ASP.NET dla usługi Azure Mobile Apps

W tym temacie pokazano, jak używać zestawu SDK serwera zaplecza platformy .NET w kluczowych scenariuszach usługi Aplikacja systemu Azure Service Mobile Apps. Zestaw SDK usługi Azure Mobile Apps ułatwia pracę z klientami mobilnymi z poziomu aplikacji ASP.NET.

Ostrzeżenie

W tym artykule opisano informacje dotyczące wersji 4.2.0 biblioteki, która jest zastępowana przez bibliotekę v5.0.0. Aby uzyskać najbardziej aktualne informacje, zobacz artykuł dotyczący najnowszej wersji

Tworzenie zaplecza platformy Azure Mobile Apps ASP.NET Framework

Aplikację platformy ASP.NET Framework można utworzyć przy użyciu programu Visual Studio 2019.

  • Wybierz szablon ASP.NET Aplikacja internetowa (.NET Framework). Jeśli masz problemy z lokalizowaniem tego szablonu, wybierz pozycję C#, Wszystkie platformy i Sieć Web.
  • Po wybraniu nazwy i lokalizacji aplikacji wybierz szablon projektu internetowego interfejsu API . Zostanie zainstalowana poprawna kolekcja usług podstawowych dla aplikacji.

Pobieranie i inicjowanie zestawu SDK

Zestaw SDK jest dostępny w NuGet.org i udostępnia podstawowe funkcje wymagane do rozpoczęcia korzystania z usługi Azure Mobile Apps. Aby zainstalować pakiet:

  1. Kliknij prawym przyciskiem myszy projekt, a następnie wybierz polecenie Zarządzaj pakietami NuGet....
  2. Na karcie Przeglądaj wprowadź w Microsoft.Azure.Mobile.Server polu wyszukiwania, a następnie naciśnij klawisz Enter.
  3. Microsoft.Azure.Mobile.Server.Quickstart Wybierz pakiet.
  4. Kliknij przycisk Zainstaluj.
  5. Postępuj zgodnie z monitami, aby ukończyć instalację.

Powtórz również proces instalacji Microsoft.Owin.Host.SystemWeb .

Uwaga

Nie aktualizuj pakietów, które są używane jako zależności, takie jak Newtonsoft.JSON lub System.IdentityModel.Jwt. Interfejsy API tych pakietów w wielu przypadkach uległy zmianie i są teraz niezgodne z usługą Azure Mobile Apps for ASP.NET Framework.

Inicjowanie projektu serwera

Projekt serwera usługi Azure Mobile Apps jest inicjowany podobnie do innych projektów platformy ASP.NET Framework; przez dołączenie klasy startowej OWIN. Aby dodać klasę uruchamiania OWIN:

  1. Kliknij prawym przyciskiem myszy projekt, a następnie wybierz polecenie Dodaj>nowy element

  2. Wybierz pozycję Ogólne sieci Web>, a następnie wybierz szablon Klasy uruchamiania OWIN.

  3. Wprowadź nazwę jako nazwę Startup.cs uruchamiania.

  4. Zawartość Startup.cs pliku powinna być podobna do następującego kodu:

    using Microsoft.Azure.Mobile.Server.Config;
    using Microsoft.Owin;
    using Owin;
    using System.Web.Http;
    
    [assembly: OwinStartup(typeof(WebApplication1.Startup))]
    namespace WebApplication1
    {
        public class Startup
        {
            public void Configuration(IAppBuilder app)
            {
                HttpConfiguration config = new HttpConfiguration();
                new MobileAppConfiguration()
                    // no added features
                    .ApplyTo(config);
                app.UseWebApi(config);
            }
        }
    }
    

    OwinStartupPrzestrzeń nazw i nazwa klasy będą się różnić w zależności od projektu. W szczególności należy zastąpić zawartość Configuration() metody i odpowiednio dostosować using dyrektywy.

Aby włączyć poszczególne funkcje, przed wywołaniem metody ApplyTo należy wywołać metody rozszerzenia w obiekcie MobileAppConfiguration. Na przykład poniższy kod dodaje domyślne trasy do wszystkich kontrolerów interfejsu API, które mają atrybut [MobileAppController] podczas inicjowania:

new MobileAppConfiguration()
    .MapApiControllers()
    .ApplyTo(config);

Poniższa konfiguracja jest uznawana za "normalne" użycie, które umożliwia kontrolerom tabel i interfejsów API uzyskiwanie dostępu do usługi SQL przy użyciu programu Entity Framework.

new MobileAppConfiguration()
    .AddMobileAppHomeController()
    .MapApiControllers()
    .AddTables(
        new MobileAppTableConfiguration()
            .MapTableControllers()
            .AddEntityFramework()
    )
    .MapLegacyCrossDomainController()
    .ApplyTo(config);

Używane metody rozszerzenia to:

  • AddMobileAppHomeController() Udostępnia domyślną stronę główną usługi Azure Mobile Apps.
  • MapApiControllers() Udostępnia niestandardowe możliwości interfejsu API dla kontrolerów WebAPI ozdobionych atrybutem [MobileAppController] .
  • AddTables() Udostępnia mapowanie /tables punktów końcowych na kontrolery tabel.
  • AddTablesWithEntityFramework() to krótkie mapowanie /tables punktów końcowych przy użyciu kontrolerów opartych na programie Entity Framework.
  • MapLegacyCrossDomainController() Zapewnia standardowe nagłówki CORS na potrzeby programowania lokalnego.

Rozszerzenia zestawu SDK

Następujące pakiety rozszerzeń oparte na oprogramowaniu NuGet udostępniają różne funkcje mobilne, które mogą być używane przez aplikację. Rozszerzenia są włączane podczas inicjowania przy użyciu obiektu MobileAppConfiguration .

  • Microsoft.Azure.Mobile.Server.Quickstart obsługuje podstawową konfigurację usługi Mobile Apps. Dodano do konfiguracji przez wywołanie metody rozszerzenia UseDefaultConfiguration podczas inicjowania. To rozszerzenie obejmuje następujące rozszerzenia: Powiadomienia, Uwierzytelnianie, Jednostka, Tabele, Międzydomenowe i Pakiety macierzyste.
  • Microsoft.Azure.Mobile.Server.Home Implementuje domyślną, że ta aplikacja mobilna jest uruchomiona na stronie głównej witryny sieci Web. Dodaj do konfiguracji, wywołując metodę rozszerzenia AddMobileAppHomeController .
  • Microsoft.Azure.Mobile.Server.Tables zawiera klasy do pracy z danymi i konfigurowania potoku danych. Dodaj do konfiguracji, wywołując metodę rozszerzenia AddTables .
  • Microsoft.Azure.Mobile.Server.Entity umożliwia programowi Entity Framework uzyskiwanie dostępu do danych w usłudze SQL Database. Dodaj do konfiguracji, wywołując metodę rozszerzenia AddTablesWithEntityFramework .
  • Microsoft.Azure.Mobile.Server.Authentication umożliwia uwierzytelnianie i konfigurowanie oprogramowania pośredniczącego OWIN używanego do sprawdzania poprawności tokenów. Dodaj do konfiguracji, wywołując element AddAppServiceAuthentication i IAppBuilder.Użyj metod rozszerzeniaAppServiceAuthentication .
  • Microsoft.Azure.Mobile.Server.Notifications włącza powiadomienia wypychane i definiuje punkt końcowy rejestracji wypychanej. Dodaj do konfiguracji, wywołując metodę rozszerzenia AddPushNotifications .
  • Microsoft.Azure.Mobile.Server.CrossDomain Tworzy kontroler, który udostępnia dane starszym przeglądarkom internetowym z poziomu aplikacji mobilnej. Dodaj do konfiguracji, wywołując metodę rozszerzenia MapLegacyCrossDomainController .
  • Microsoft.Azure.Mobile.Server.Login udostępnia metodę AppServiceLoginHandler.CreateToken() , która jest metodą statyczną używaną podczas niestandardowych scenariuszy uwierzytelniania.

Publikowanie projektu serwera

W tej sekcji pokazano, jak opublikować projekt zaplecza platformy .NET z poziomu programu Visual Studio. Istnieją inne metody, za pomocą których można opublikować aplikację. Aby uzyskać więcej informacji, zobacz dokumentację usługi aplikacja systemu Azure.

  1. W programie Visual Studio ponownie skompiluj projekt, aby przywrócić pakiety NuGet.
  2. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt, kliknij pozycję Publikuj.
  3. Jeśli nie opublikowano wcześniej tego projektu, skonfigurujesz publikowanie.
    • Wybierz platformę Azure jako docelową.
    • Wybierz usługę aplikacja systemu Azure (Windows) dla określonego miejsca docelowego.
    • Wybierz wystąpienie usługi App Service, do którego chcesz wdrożyć. Jeśli go nie masz, użyj polecenia + , aby go utworzyć.
    • Kliknij przycisk Zakończ.
  4. Jeśli wcześniej nie połączono bazy danych SQL, kliknij przycisk Konfiguruj obok bazy danych SQL.
    • Wybieranie usługi Azure SQL Database
    • Wybierz bazę danych. Jeśli nie masz takiej bazy danych lub chcesz użyć innej bazy danych, kliknij przycisk , + aby utworzyć nową bazę danych i serwer.
    • Wprowadź MS_TableConnectionString jako nazwę parametry połączenia bazy danych. Wprowadź nazwę użytkownika i hasło w podanych polach.
    • Kliknij przycisk Zakończ
  5. Kliknij pozycję Publikuj

Publikowanie na platformie Azure zajmuje trochę czasu. Aby uzyskać więcej informacji, zobacz dokumentację programu Visual Studio.

Definiowanie kontrolera tabeli

Zdefiniuj kontroler tabeli, aby uwidocznić tabelę SQL klientom mobilnym. Konfigurowanie kontrolera tabeli wymaga trzech kroków:

  1. Utwórz klasę obiektu transferu danych (DTO).
  2. Skonfiguruj odwołanie do tabeli w klasie Mobile DbContext.
  3. Utwórz kontroler tabeli.

Obiekt transferu danych (DTO) to zwykły obiekt języka C#, który dziedziczy z EntityData. Na przykład:

public class TodoItem : EntityData
{
    public string Text { get; set; }
    public bool Complete {get; set;}
}

DTO służy do definiowania tabeli w bazie danych SQL. Aby utworzyć wpis bazy danych, dodaj DbSet<> do używanej DbContext właściwości:

public class MobileServiceContext : DbContext
{
    private const string connectionStringName = "Name=MS_TableConnectionString";

    public MobileServiceContext() : base(connectionStringName)
    {

    }

    public DbSet<TodoItem> TodoItems { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Add(
            new AttributeToColumnAnnotationConvention<TableColumnAttribute, string>(
                "ServiceColumnTable", (property, attributes) => attributes.Single().ColumnType.ToString()));
    }
}

Na koniec utwórz nowy kontroler:

  1. Kliknij prawym przyciskiem myszy Controllers folder.

  2. Wybieranie kontrolera internetowego interfejsu API>sieci Web 2 — pusty

  3. Wprowadź nazwę kontrolera.

  4. Zastąp zawartość nowego kontrolera następującym kodem:

    public class TodoItemController : TableController<TodoItem>
    {
        protected override void Initialize(HttpControllerContext controllerContext)
        {
            base.Initialize(controllerContext);
            ZUMOAPPNAMEContext context = new ZUMOAPPNAMEContext();
            DomainManager = new EntityDomainManager<TodoItem>(context, Request);
        }
    
        // GET tables/TodoItem
        public IQueryable<TodoItem> GetAllTodoItems()
        {
            return Query();
        }
    
        // GET tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
        public SingleResult<TodoItem> GetTodoItem(string id)
        {
            return Lookup(id);
        }
    
        // PATCH tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
        public Task<TodoItem> PatchTodoItem(string id, Delta<TodoItem> patch)
        {
            return UpdateAsync(id, patch);
        }
    
        // POST tables/TodoItem
        public async Task<IHttpActionResult> PostTodoItem(TodoItem item)
        {
            TodoItem current = await InsertAsync(item);
            return CreatedAtRoute("Tables", new { id = current.Id }, current);
        }
    
        // DELETE tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
        public Task DeleteTodoItem(string id)
        {
            return DeleteAsync(id);
        }
    }
    

Dostosowywanie rozmiaru stronicowania tabeli

Domyślnie usługa Azure Mobile Apps zwraca 50 rekordów na żądanie. Stronicowanie gwarantuje, że klient nie będzie wiązał wątku interfejsu użytkownika ani serwera zbyt długo, zapewniając dobre środowisko użytkownika. Aby zmienić rozmiar stronicowania tabeli, zwiększ po stronie serwera "dozwolony rozmiar zapytania" i rozmiar strony po stronie klienta Strona serwera "dozwolony rozmiar zapytania" jest dostosowywana przy użyciu atrybutu EnableQuery :

[EnableQuery(PageSize = 500)]

Upewnij się, że rozmiar strony jest taki sam lub większy niż rozmiar żądany przez klienta. Szczegółowe informacje na temat zmiany rozmiaru strony klienta można znaleźć w dokumentacji instrukcji klienta.

Definiowanie niestandardowego kontrolera interfejsu API

Niestandardowy kontroler interfejsu API zapewnia najbardziej podstawowe funkcje zaplecza aplikacji mobilnej przez uwidacznianie punktu końcowego. Kontroler interfejsu API specyficzny dla urządzeń przenośnych można zarejestrować przy użyciu atrybutu [MobileAppController]. Atrybut MobileAppController rejestruje trasę, konfiguruje serializator JSON usługi Mobile Apps i włącza sprawdzanie wersji klienta.

Zawartość niestandardowego kontrolera interfejsu API to:

[MobileAppController]
public class CustomAPIController : ApiController
{
    // Content here
}

Po skonfigurowaniu za pomocą atrybutu MobileAppController można zdefiniować niestandardowy interfejs API w taki sam sposób, jak każdy inny internetowy interfejs API.

Praca z uwierzytelnianiem

Usługa Azure Mobile Apps używa uwierzytelniania/autoryzacji usługi App Service do zabezpieczania zaplecza mobilnego. W tej sekcji przedstawiono sposób wykonywania następujących zadań związanych z uwierzytelnianiem w projekcie serwera zaplecza platformy .NET:

Dodawanie uwierzytelniania do projektu serwera

Uwierzytelnianie można dodać do projektu serwera, rozszerzając obiekt MobileAppConfiguration i konfigurując oprogramowanie pośredniczące OWIN.

  1. W programie Visual Studio zainstaluj pakiet Microsoft.Azure.Mobile.Server.Authentication .

  2. Startup.cs W pliku projektu dodaj następujący wiersz kodu na początku metody Configuration:

    app.UseAppServiceAuthentication(config);
    

    Ten składnik oprogramowania pośredniczącego OWIN weryfikuje tokeny wystawione przez skojarzoną bramę usługi App Service.

  3. [Authorize] Dodaj atrybut do dowolnego kontrolera lub metody, która wymaga uwierzytelniania.

Używanie uwierzytelniania niestandardowego dla aplikacji

Ważne

Aby włączyć uwierzytelnianie niestandardowe, należy najpierw włączyć uwierzytelnianie usługi App Service bez wybierania dostawcy dla usługi App Service w witrynie Azure Portal. Spowoduje to włączenie zmiennej środowiskowej WEBSITE_AUTH_SIGNING_KEY w przypadku hostowanych.

Jeśli nie chcesz używać jednego z dostawców uwierzytelniania/autoryzacji usługi App Service, możesz zaimplementować własny system logowania. Zainstaluj pakiet Microsoft.Azure.Mobile.Server.Login, aby ułatwić generowanie tokenów uwierzytelniania. Podaj własny kod do sprawdzania poprawności poświadczeń użytkownika. Możesz na przykład sprawdzić hasła z solą i skrótami w bazie danych. W poniższym isValidAssertion() przykładzie metoda (zdefiniowana gdzie indziej) jest odpowiedzialna za te kontrole.

Uwierzytelnianie niestandardowe jest udostępniane przez utworzenie interfejsu ApiController i uwidacznianie register i login akcje. Klient powinien używać niestandardowego interfejsu użytkownika do zbierania informacji od użytkownika. Informacje są następnie przesyłane do interfejsu API przy użyciu standardowego wywołania HTTP POST. Gdy serwer zweryfikuje asercji, token zostanie wystawiony przy użyciu AppServiceLoginHandler.CreateToken() metody . Interfejs ApiController nie powinien używać atrybutu [MobileAppController] .

Przykładowa login akcja:

public IHttpActionResult Post([FromBody] JObject assertion)
{
    if (isValidAssertion(assertion)) // user-defined function, checks against a database
    {
        JwtSecurityToken token = AppServiceLoginHandler.CreateToken(new Claim[] { new Claim(JwtRegisteredClaimNames.Sub, assertion["username"]) },
            mySigningKey,
            myAppURL,
            myAppURL,
            TimeSpan.FromHours(24) );
        return Ok(new LoginResult()
        {
            AuthenticationToken = token.RawData,
            User = new LoginResultUser() { UserId = userName.ToString() }
        });
    }
    else // user assertion was not valid
    {
        return this.Request.CreateUnauthorizedResponse();
    }
}

W poprzednim przykładzie LoginResult i LoginResultUser są obiektami, które można serializować, ujawniając wymagane właściwości. Klient oczekuje, że odpowiedzi logowania zostaną zwrócone jako obiekty JSON formularza:

{
    "authenticationToken": "<token>",
    "user": {
        "userId": "<userId>"
    }
}

Metoda zawiera odbiorców i parametr wystawcy.AppServiceLoginHandler.CreateToken() Oba te parametry są ustawione na adres URL katalogu głównego aplikacji przy użyciu schematu HTTPS. Podobnie należy ustawić klucz tajny jako wartość klucza podpisywania aplikacji. Nie rozpowszechniaj klucza podpisywania w kliencie, ponieważ może służyć do mięcia kluczy i personifikacji użytkowników. Klucz podpisywania hostowany w usłudze App Service można uzyskać, odwołując się do zmiennej środowiskowej WEBSITE_AUTH_SIGNING_KEY . W razie potrzeby w kontekście debugowania lokalnego postępuj zgodnie z instrukcjami w sekcji Debugowanie lokalne z uwierzytelnianiem , aby pobrać klucz i zapisać go jako ustawienie aplikacji.

Wystawiony token może również zawierać inne oświadczenia i datę wygaśnięcia. Co najmniej wystawiony token musi zawierać oświadczenie podmiotu (sub).

Standardową metodę klienta loginAsync() można obsługiwać przez przeciążenie trasy uwierzytelniania. Jeśli klient wywołuje polecenie client.loginAsync('custom'); , aby się zalogować, trasa musi mieć wartość /.auth/login/custom. Trasę dla niestandardowego kontrolera uwierzytelniania można ustawić przy użyciu polecenia MapHttpRoute():

config.Routes.MapHttpRoute("custom", ".auth/login/custom", new { controller = "CustomAuth" });

Napiwek

Użycie podejścia loginAsync() gwarantuje, że token uwierzytelniania jest dołączany do każdego kolejnego wywołania usługi.

Pobieranie uwierzytelnionych informacji o użytkowniku

Gdy użytkownik jest uwierzytelniany przez usługę App Service, możesz uzyskać dostęp do przypisanego identyfikatora użytkownika i innych informacji w kodzie zaplecza platformy .NET. Informacje o użytkowniku mogą służyć do podejmowania decyzji dotyczących autoryzacji w zapleczu. Poniższy kod uzyskuje identyfikator użytkownika skojarzony z żądaniem:

// Get the SID of the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;

Identyfikator SID pochodzi z identyfikatora użytkownika specyficznego dla dostawcy i jest statyczny dla danego użytkownika i dostawcy logowania. Identyfikator SID ma wartość null dla nieprawidłowych tokenów uwierzytelniania.

Usługa App Service umożliwia również żądanie określonych oświadczeń od dostawcy logowania. Każdy dostawca tożsamości może podać więcej informacji przy użyciu zestawu SDK dostawcy tożsamości. Na przykład możesz użyć interfejsu API programu Graph serwisu Facebook w celu uzyskania informacji o znajomych. Możesz określić oświadczenia, które są żądane w bloku dostawcy w witrynie Azure Portal. Niektóre oświadczenia wymagają większej konfiguracji z dostawcą tożsamości.

Poniższy kod wywołuje metodę rozszerzenia GetAppServiceIdentityAsync , aby uzyskać poświadczenia logowania, które obejmują token dostępu wymagany do wysłania żądań względem interfejsu API programu Graph serwisu Facebook:

// Get the credentials for the logged-in user.
var credentials = await this.User.GetAppServiceIdentityAsync<FacebookCredentials>(this.Request);

if (credentials.Provider == "Facebook")
{
    // Create a query string with the Facebook access token.
    var fbRequestUrl = "https://graph.facebook.com/me/feed?access_token="
        + credentials.AccessToken;

    // Create an HttpClient request.
    var client = new System.Net.Http.HttpClient();

    // Request the current user info from Facebook.
    var resp = await client.GetAsync(fbRequestUrl);
    resp.EnsureSuccessStatusCode();

    // Do something here with the Facebook user information.
    var fbInfo = await resp.Content.ReadAsStringAsync();
}

Dodaj instrukcję using dla polecenia System.Security.Principal , aby podać metodę rozszerzenia GetAppServiceIdentityAsync .

Ograniczanie dostępu do danych dla autoryzowanych użytkowników

W poprzedniej sekcji pokazano, jak pobrać identyfikator użytkownika uwierzytelnionego użytkownika. Możesz ograniczyć dostęp do danych i innych zasobów na podstawie tej wartości. Na przykład dodanie kolumny userId do tabel i filtrowanie wyników zapytania według identyfikatora użytkownika jest prostym sposobem ograniczenia zwracanych danych tylko do autoryzowanych użytkowników. Poniższy kod zwraca wiersze danych tylko wtedy, gdy identyfikator SID pasuje do wartości w kolumnie UserId w tabeli TodoItem:

// Get the SID of the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;

// Only return data rows that belong to the current user.
return Query().Where(t => t.UserId == sid);

Metoda Query() zwraca element IQueryable , który może być manipulowany przez LINQ w celu obsługi filtrowania.

Debugowanie i rozwiązywanie problemów z zestawem .NET Server SDK

Usługa aplikacja systemu Azure udostępnia kilka technik debugowania i rozwiązywania problemów dotyczących aplikacji ASP.NET:

Rejestrowanie

Możesz zapisywać w dziennikach diagnostycznych usługi App Service przy użyciu standardowego zapisu śledzenia ASP.NET. Przed zapisaniem w dziennikach należy włączyć diagnostykę w zapleczu usługi Azure Mobile Apps.

Aby włączyć diagnostykę i zapisać w dziennikach:

  1. Wykonaj kroki opisane w temacie Włączanie rejestrowania aplikacji (Windows).

  2. Dodaj następującą instrukcję using w pliku kodu:

    using System.Web.Http.Tracing;
    
  3. Utwórz moduł zapisywania śledzenia do zapisu z zaplecza platformy .NET do dzienników diagnostycznych w następujący sposób:

    ITraceWriter traceWriter = this.Configuration.Services.GetTraceWriter();
    traceWriter.Info("Hello, World");
    
  4. Opublikuj ponownie projekt serwera i uzyskaj dostęp do zaplecza usługi Azure Mobile Apps, aby wykonać ścieżkę kodu przy użyciu rejestrowania.

  5. Pobierz i oceń dzienniki zgodnie z opisem w sekcji Pliki dziennika programu Access.

Lokalne debugowanie przy użyciu uwierzytelniania

Aplikację można uruchomić lokalnie, aby przetestować zmiany przed opublikowaniem ich w chmurze. W przypadku większości zapleczy usługi Azure Mobile Apps naciśnij klawisz F5 w programie Visual Studio. Jednak podczas korzystania z uwierzytelniania należy wziąć pod uwagę pewne dodatkowe kwestie.

Musisz mieć aplikację mobilną opartą na chmurze ze skonfigurowanym uwierzytelnianiem/autoryzacją usługi App Service, a klient musi mieć punkt końcowy w chmurze określony jako alternatywny host logowania. Zapoznaj się z dokumentacją platformy klienta, aby zapoznać się z określonymi wymaganymi krokami.

Upewnij się, że zainstalowano zaplecze mobilne Microsoft.Azure.Mobile.Server.Authentication . Następnie w klasie uruchamiania OWIN aplikacji dodaj następujące elementy po MobileAppConfiguration zastosowaniu do elementu HttpConfiguration:

app.UseAppServiceAuthentication(new AppServiceAuthenticationOptions()
{
    SigningKey = ConfigurationManager.AppSettings["authSigningKey"],
    ValidAudiences = new[] { ConfigurationManager.AppSettings["authAudience"] },
    ValidIssuers = new[] { ConfigurationManager.AppSettings["authIssuer"] },
    TokenHandler = config.GetAppServiceTokenHandler()
});

W poprzednim przykładzie należy skonfigurować ustawienia aplikacji authAudience i authIssuer w pliku Web.config jako adres URL katalogu głównego aplikacji przy użyciu schematu HTTPS. Podobnie należy ustawić wartość authSigningKey jako wartość klucza podpisywania aplikacji.

Aby uzyskać klucz podpisywania:

  1. Przejdź do aplikacji w witrynie Azure Portal
  2. Kliknij pozycję Narzędzia>Kudu>Go.
  3. W lokacji Zarządzania Kudu kliknij pozycję Środowisko.
  4. Znajdź wartość parametru WEBSITE_AUTH_SIGNING_KEY.

Użyj klucza podpisywania dla parametru authSigningKey w konfiguracji aplikacji lokalnej. Zaplecze mobilne jest teraz wyposażone w weryfikowanie tokenów podczas uruchamiania lokalnego, co klient uzyskuje token z punktu końcowego opartego na chmurze.