Jak używać zestawu SDK platformy ASP.NET dla usługi Azure Mobile Apps
Nuta
Ten produkt jest wycofany. Aby zastąpić projekty przy użyciu platformy .NET 8 lub nowszej, zobacz bibliotekę datasync zestawu narzędzi Community Toolkit.
W tym temacie pokazano, jak używać zestawu SDK serwera zaplecza platformy .NET w kluczowych scenariuszach usługi Azure App 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 Web Application (.NET Framework). Jeśli masz problemy z lokalizowaniem tego szablonu, wybierz pozycję C# , Wszystkie platformyi 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.orgi udostępnia podstawowe funkcje wymagane do rozpoczęcia korzystania z usługi Azure Mobile Apps. Aby zainstalować pakiet:
- Kliknij prawym przyciskiem myszy projekt, a następnie wybierz pozycję Zarządzaj pakietami NuGet....
- Na karcie Przeglądaj wprowadź
Microsoft.Azure.Mobile.Server
w polu wyszukiwania, a następnie naciśnij Enter. - Wybierz pakiet
Microsoft.Azure.Mobile.Server.Quickstart
. - Kliknij pozycję Zainstaluj.
- Postępuj zgodnie z monitami, aby ukończyć instalację.
Powtórz również proces instalacji Microsoft.Owin.Host.SystemWeb
.
Nuta
Nie aktualizuj pakietów używanych jako zależności, takich 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:
Kliknij prawym przyciskiem myszy projekt, a następnie wybierz pozycję Dodaj>nowy element
Wybierz
ogólne sieci Web, a następnie wybierz szablon klasy uruchamiania OWIN . Wprowadź nazwę
Startup.cs
jako nazwę uruchamiania.Zawartość pliku
Startup.cs
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); } } }
Nazwa
OwinStartup
, przestrzeni nazw i klasy będzie inna w zależności od projektu. W szczególności należy zastąpić zawartość metodyConfiguration()
i odpowiednio dostosować dyrektywyusing
.
Aby włączyć poszczególne funkcje, należy wywołać metody rozszerzenia w obiekcie MobileAppConfiguration przed wywołaniem ApplyTo. Na przykład poniższy kod dodaje trasy domyślne 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 funkcje interfejsu API dla kontrolerów interfejsu WebAPI ozdobionych atrybutem[MobileAppController]
. -
AddTables()
zapewnia mapowanie punktów końcowych/tables
na kontrolery tabel. -
AddTablesWithEntityFramework()
to krótkie mapowanie punktów końcowych/tables
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
- 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ą ta aplikacja mobilna jest uruchomiona dla katalogu głównego 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 dostęp do danych w usłudze SQL Database. Dodaj do konfiguracji, wywołując metodę rozszerzenia AddTablesWithEntityFramework.
- Microsoft.Azure.Mobile.Server.Authentication Włącza uwierzytelnianie i konfiguruje oprogramowanie pośredniczące OWIN używane do sprawdzania poprawności tokenów. Dodaj do konfiguracji, wywołując AddAppServiceAuthentication i IAppBuilder.metody rozszerzenia UseAppServiceAuthentication.
- 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 Azure App Service .
- W programie Visual Studio ponownie skompiluj projekt, aby przywrócić pakiety NuGet.
- W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt, kliknij Opublikuj.
- Jeśli nie opublikowano wcześniej tego projektu, skonfigurujesz publikowanie.
- Wybierz pozycję Azure dla elementu docelowego.
- Wybierz azure App Service (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 +, aby go utworzyć.
- Kliknij zakończ.
- Jeśli wcześniej nie połączono bazy danych SQL, kliknij przycisk Skonfiguruj obok bazy danych SQL.
- Wybieranie usługi Azure SQL Database
- Wybierz bazę danych. Jeśli go nie masz lub chcesz użyć innej, kliknij +, aby utworzyć nową bazę danych i serwer.
- Wprowadź
MS_TableConnectionString
jako nazwę parametrów połączenia bazy danych. Wprowadź nazwę użytkownika i hasło w podanych polach. - Kliknij Zakończ
- Kliknij pozycję Publikuj
Publikowanie na platformie Azure zajmuje trochę czasu. Aby uzyskać więcej informacji, zobacz dokumentacji programu Visual Studio.
Definiowanie kontrolera tabeli
Zdefiniuj kontroler tabeli, aby uwidocznić tabelę SQL klientom mobilnym. Konfigurowanie kontrolera tabeli wymaga trzech kroków:
- Utwórz klasę obiektu transferu danych (DTO).
- Skonfiguruj odwołanie do tabeli w klasie Mobile DbContext.
- 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 właściwość DbSet<>
do używanego DbContext
:
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:
Kliknij prawym przyciskiem myszy folder
Controllers
.Wybieranie kontrolera internetowego interfejsu API internetowego interfejsu API 2>— puste
Wprowadź nazwę kontrolera.
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 rozmiar "dozwolonego rozmiaru zapytania" po stronie serwera 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 przy użyciu 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
- Używanie uwierzytelniania niestandardowego dla aplikacji
- Pobieranie uwierzytelnionych informacji o użytkowniku
- Ograniczanie dostępu do danych dla autoryzowanych użytkowników
Dodawanie uwierzytelniania do projektu serwera
Uwierzytelnianie można dodać do projektu serwera, rozszerzając obiekt MobileAppConfiguration i konfigurując oprogramowanie pośredniczące OWIN.
W programie Visual Studio zainstaluj pakiet Microsoft.Azure.Mobile.Server.Authentication.
W pliku projektu
Startup.cs
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.
Dodaj atrybut
[Authorize]
do dowolnego kontrolera lub metody, która wymaga uwierzytelniania.
Używanie uwierzytelniania niestandardowego dla aplikacji
Ważny
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 przykładzie metoda isValidAssertion()
(zdefiniowana gdzie indziej) jest odpowiedzialna za te kontrole.
Uwierzytelnianie niestandardowe jest udostępniane przez utworzenie interfejsu ApiController i uwidocznienie register
i login
akcji. 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 metody AppServiceLoginHandler.CreateToken()
.
ApiController nie powinien używać atrybutu [MobileAppController]
.
Przykładowa akcja login
:
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 WEBSITE_AUTH_SIGNING_KEY
. W razie potrzeby w kontekście debugowania lokalnego postępuj zgodnie z instrukcjami w sekcji Lokalne debugowanie 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).
Można obsługiwać standardową metodę loginAsync()
klienta przez przeciążenie trasy uwierzytelniania. Jeśli klient wywołuje client.loginAsync('custom');
, aby się zalogować, trasa musi być /.auth/login/custom
. Trasę dla niestandardowego kontrolera uwierzytelniania można ustawić przy użyciu MapHttpRoute()
:
config.Routes.MapHttpRoute("custom", ".auth/login/custom", new { controller = "CustomAuth" });
Napiwek
Użycie metody 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 w celu pobrania poświadczeń 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 System.Security.Principal
, aby udostępnić 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 IQueryable
, które mogą być manipulowane przez LINQ w celu obsługi filtrowania.
Debugowanie i rozwiązywanie problemów z zestawem .NET Server SDK
Usługa Azure App Service udostępnia kilka technik debugowania i rozwiązywania problemów dotyczących aplikacji ASP.NET:
- Monitorowanie usługi Azure App Service
- Włączanie rejestrowania diagnostycznego w usłudze Azure App Service
- Rozwiązywanie problemów z usługą Azure App Service w programie Visual Studio
Wyrąb
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:
Wykonaj kroki opisane w Włączanie rejestrowania aplikacji (Windows).
Dodaj następującą instrukcję using w pliku kodu:
using System.Web.Http.Tracing;
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");
Opublikuj ponownie projekt serwera i uzyskaj dostęp do zaplecza usługi Azure Mobile Apps, aby wykonać ścieżkę kodu przy użyciu rejestrowania.
Pobierz i oceń dzienniki zgodnie z opisem w 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 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 zaplecze mobilne ma zainstalowane Microsoft.Azure.Mobile.Server.Authentication. Następnie w klasie uruchamiania OWIN aplikacji dodaj następujące elementy po zastosowaniu MobileAppConfiguration
do 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ć authAudience i authIssuer ustawienia aplikacji w pliku Web.config na każdy adres URL katalogu głównego aplikacji przy użyciu schematu HTTPS. Podobnie należy ustawić authSigningKey na wartość klucza podpisywania aplikacji.
Aby uzyskać klucz podpisywania:
- Przejdź do aplikacji w witrynie Azure Portal
- Kliknij pozycję narzędzia >Kudu>Go.
- W witrynie Zarządzania Kudu kliknij pozycję Environment.
- Znajdź wartość
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.