Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Wskazówka
Zestaw SDK serwera .NET dla usługi Azure Mobile Apps jest oprogramowaniem open source w witrynie GitHub. Repozytorium zawiera cały kod źródłowy, w tym cały zestaw testów jednostkowych zestawu SDK serwera i niektóre przykładowe projekty.
Dokumentacja referencyjna
Dokumentacja referencyjna zestawu SDK serwera znajduje się tutaj: Dokumentacja platformy .NET usługi Azure Mobile Apps.
Instrukcje: tworzenie zaplecza aplikacji mobilnej .NET
Jeśli uruchamiasz nowy projekt, możesz utworzyć aplikację usługi App Service przy użyciu witryny Azure Portal lub programu Visual Studio. Aplikację usługi App Service można uruchomić lokalnie lub opublikować projekt w aplikacji mobilnej usługi App Service opartej na chmurze.
Jeśli dodasz możliwości mobilne do istniejącego projektu, zobacz sekcję Pobieranie i inicjowanie zestawu SDK .
Tworzenie zaplecza platformy .NET przy użyciu witryny Azure Portal
Aby utworzyć zaplecze mobilne usługi App Service, wykonaj samouczek Szybki start lub wykonaj następujące kroki:
Zaloguj się w witrynie Azure Portal.
Wybierz pozycję +NOWA>aplikacja internetowa + mobilna>aplikacja mobilna, a następnie podaj nazwę zaplecza usługi Mobile Apps.
W polu Grupa zasobów wybierz istniejącą grupę zasobów lub utwórz nową (używając tej samej nazwy co aplikacja).
W przypadku planu usługi App Service wybrano domyślny plan (w warstwie Standardowa). Możesz również wybrać inny plan lub utworzyć nowy.
Ustawienia planu usługi App Service określają lokalizację, funkcje, koszty i zasoby obliczeniowe skojarzone z aplikacją. Aby uzyskać więcej informacji na temat planów usługi App Service i sposobu tworzenia nowego planu w innej warstwie cenowej i w żądanej lokalizacji, zobacz Szczegółowe omówienie planów usługi Azure App Service.
Wybierz Utwórz. Ten krok powoduje utworzenie zaplecza usługi Mobile Apps.
W okienku Ustawienia dla nowego zaplecza usługi Mobile Apps wybierz pozycję Szybki start> platformy > aplikacji klienckiej Połącz bazę danych.
W okienku Dodawanie połączenia danych wybierz pozycję SQL Database>Utwórz nową bazę danych. Wprowadź nazwę bazy danych, wybierz warstwę cenową, a następnie wybierz pozycję Serwer. Możesz ponownie użyć tej nowej bazy danych. Jeśli masz już bazę danych w tej samej lokalizacji, możesz zamiast tego wybrać pozycję Użyj istniejącej bazy danych. Nie zalecamy używania bazy danych w innej lokalizacji ze względu na koszty przepustowości i większe opóźnienia.
W okienku Nowy serwer wprowadź unikatową nazwę serwera w polu Nazwa serwera, podaj nazwę logowania i hasło, wybierz pozycję Zezwalaj usługom platformy Azure na dostęp do serwera, a następnie wybierz przycisk OK. W tym kroku zostanie utworzona nowa baza danych.
W okienku Dodawanie połączenia danych wybierz pozycję Parametry połączenia, wprowadź wartości logowania i hasła dla bazy danych, a następnie wybierz przycisk OK.
Przed kontynuowaniem poczekaj kilka minut na pomyślne wdrożenie bazy danych.
W bloku Wprowadzenie w obszarze Tworzenie interfejsu API tabeli wybierz pozycję C# jako język zaplecza. Kliknij przycisk Pobierz, wyodrębnij skompresowane pliki projektu na komputer lokalny i otwórz rozwiązanie w programie Visual Studio.
Tworzenie zaplecza platformy .NET przy użyciu programu Visual Studio 2017
Zainstaluj obciążenie platformy Azure za pośrednictwem Instalatora programu Visual Studio, aby opublikować w projekcie usługi Azure Mobile Apps z poziomu programu Visual Studio. Po zainstalowaniu zestawu SDK utwórz aplikację ASP.NET, wykonując następujące kroki:
- Otwórz okno dialogowe Nowy projekt (z menu Plik>nowy>projekt...).
- Rozwiń węzeł Visual C# i wybierz pozycję Sieć Web.
- Wybierz pozycję ASP.NET Aplikacja internetowa (.NET Framework).
- Wprowadź nazwę projektu. Następnie kliknij przycisk OK.
- Wybierz pozycję Azure Mobile App (Aplikacja mobilna Platformy Azure ) z listy szablonów.
- Kliknij przycisk OK , aby utworzyć rozwiązanie.
- Kliknij prawym przyciskiem myszy projekt w Eksploratorze rozwiązań i wybierz polecenie Publikuj..., a następnie wybierz pozycję App Service jako element docelowy publikowania.
- Postępuj zgodnie z monitami, aby uwierzytelnić się i wybrać nową lub istniejącą usługę Azure App Service do opublikowania.
Tworzenie zaplecza platformy .NET przy użyciu programu Visual Studio 2015
Zainstaluj zestaw Azure SDK dla platformy .NET (w wersji 2.9.0 lub nowszej), aby utworzyć projekt usługi Azure Mobile Apps w programie Visual Studio. Po zainstalowaniu zestawu SDK utwórz aplikację ASP.NET, wykonując następujące kroki:
- Otwórz okno dialogowe Nowy projekt (z menu Plik>nowy>projekt...).
- Rozwiń węzeł Szablony>Visual C#, a następnie wybierz Web.
- Wybierz pozycję ASP.NET Aplikacja internetowa.
- Wprowadź nazwę projektu. Następnie kliknij przycisk OK.
- W obszarze szablonów ASP.NET 4.5.2 wybierz pozycję Aplikacja mobilna platformy Azure. Sprawdź pozycję Host w chmurze, aby utworzyć zaplecze mobilne w chmurze, do którego można opublikować ten projekt.
- Kliknij przycisk OK.
Instrukcje: pobieranie i inicjowanie zestawu SDK
Zestaw SDK jest dostępny w NuGet.org. Ten pakiet zawiera podstawowe funkcje wymagane do rozpoczęcia korzystania z zestawu SDK. Aby zainicjować zestaw SDK, należy wykonać akcje w obiekcie HttpConfiguration .
Instalacja zestawu SDK
Aby zainstalować zestaw SDK, kliknij prawym przyciskiem myszy projekt serwera w programie Visual Studio, wybierz pozycję Zarządzaj pakietami NuGet, wyszukaj pakiet Microsoft.Azure.Mobile.Server , a następnie kliknij przycisk Zainstaluj.
Inicjowanie projektu serwera
Projekt serwera back-endowego platformy .NET jest inicjowany w podobny sposób jak inne projekty ASP.NET, poprzez włączenie klasy startowej OWIN. Upewnij się, że odwołujesz się do pakietu Microsoft.Owin.Host.SystemWeb
NuGet . Aby dodać tę klasę w programie Visual Studio, kliknij prawym przyciskiem myszy projekt serwera i wybierz polecenie Dodaj>Nowy element, a następnie Sieć Web>Ogólne>Klasa startowa OWIN. Klasa jest generowana przy użyciu następującego atrybutu:
[assembly: OwinStartup(typeof(YourServiceName.YourStartupClassName))]
W metodzie Configuration()
klasy startowej OWIN użyj obiektu HttpConfiguration , aby skonfigurować środowisko usługi Azure Mobile Apps.
Poniższy przykład inicjuje projekt serwera bez dodanych funkcji:
// in OWIN startup class
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
new MobileAppConfiguration()
// no added features
.ApplyTo(config);
app.UseWebApi(config);
}
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);
Szybki start serwera z portalu Azure wywołuje metodę UseDefaultConfiguration(). Jest to równoważne z następującą konfiguracją:
new MobileAppConfiguration()
.AddMobileAppHomeController() // from the Home package
.MapApiControllers()
.AddTables( // from the Tables package
new MobileAppTableConfiguration()
.MapTableControllers()
.AddEntityFramework() // from the Entity package
)
.AddPushNotifications() // from the Notifications package
.MapLegacyCrossDomainController() // from the CrossDomain package
.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()
Zapewnia mapowanie punktów końcowych/tables
do kontrolerów tabel. -
AddTablesWithEntityFramework()
to krótkie mapowanie/tables
punktów końcowych przy użyciu kontrolerów opartych na programie Entity Framework. -
AddPushNotifications()
Udostępnia prostą metodę rejestrowania urządzeń w usłudze Notification Hubs. -
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. Ten pakiet jest używany przez Mobile Apps Quickstart dostępny w portalu Azure.
- 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 metody rozszerzenia AddAppServiceAuthentication i IAppBuilder.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.
Instrukcje: publikowanie projektu serwera
W tej sekcji pokazano, jak opublikować projekt zaplecza platformy .NET z poziomu programu Visual Studio. Projekt zaplecza można również wdrożyć przy użyciu usługi Git lub dowolnej z innych dostępnych tam metod.
W programie Visual Studio ponownie skompiluj projekt, aby przywrócić pakiety NuGet.
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt, kliknij polecenie Publikuj. Podczas pierwszego publikowania należy zdefiniować profil publikowania. Jeśli masz już zdefiniowany profil, możesz go wybrać i kliknąć przycisk Publikuj.
Jeśli zostanie wyświetlony monit o wybranie miejsca docelowego publikowania, kliknij pozycję Microsoft Azure App Service>Next(Dalej), a następnie (w razie potrzeby) zaloguj się przy użyciu poświadczeń platformy Azure. Program Visual Studio pobiera i bezpiecznie przechowuje ustawienia publikowania bezpośrednio z platformy Azure.
Wybierz swoją subskrypcję, wybierz Typ zasobu z widoku, rozwiń Aplikacja mobilna i kliknij zaplecze swojej aplikacji mobilnej, a następnie kliknij OK.
Sprawdź informacje o profilu publikowania i kliknij pozycję Publikuj.
Po pomyślnym opublikowaniu zaplecza aplikacji mobilnej zostanie wyświetlona strona docelowa wskazująca powodzenie.
Instrukcje: 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 DbSet<>
właściwość do używanego obiektu DbContext. W domyślnym szablonie projektu dla usługi Azure Mobile Apps dbContext nosi nazwę Models\MobileServiceContext.cs
:
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()));
}
}
Jeśli masz zainstalowany zestaw Azure SDK, możesz teraz utworzyć kontroler tabeli szablonów w następujący sposób:
- Kliknij prawym przyciskiem myszy folder Controllers i wybierz polecenie Dodaj>kontroler....
- Wybierz opcję Kontroler tabel usługi Azure Mobile Apps , a następnie kliknij przycisk Dodaj.
- W oknie dialogowym Dodawanie kontrolera :
- Z listy rozwijanej Klasa modelu, wybierz swój nowy DTO.
- Na liście rozwijanej DbContext wybierz klasę DbContext usługi mobilnej.
- Nazwa kontrolera została stworzona dla Ciebie.
- Kliknij przycisk Dodaj.
Projekt serwera Szybkiego startu zawiera przykład prostego elementu TodoItemController.
Instrukcje: dostosowywanie rozmiaru stronicowania tabeli
Domyślnie usługa Azure Mobile Apps zwraca 50 rekordów na żądanie. Stronicowanie gwarantuje, że klient nie będzie blokował wątku interfejsu użytkownika ani serwera zbyt długo, zapewniając dobre doświadczenie 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.
Instrukcje: definiowanie niestandardowego kontrolera interfejsu API
Niestandardowy kontroler interfejsu API oferuje podstawową funkcjonalność zaplecza Twojej aplikacji mobilnej, udostępniając punkt końcowy. 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.
W programie Visual Studio kliknij prawym przyciskiem myszy folder Controllers, a następnie kliknij Dodaj>Kontroler, wybierz Kontroler Web API 2 — pusty i kliknij przycisk Dodaj.
Podaj nazwę kontrolera, taką jak
CustomController
, i kliknij przycisk Dodaj.W nowym pliku klasy kontrolera dodaj następującą instrukcję using:
using Microsoft.Azure.Mobile.Server.Config;
Zastosuj atrybut [MobileAppController] do definicji klasy kontrolera interfejsu API, jak w poniższym przykładzie:
[MobileAppController] public class CustomController : ApiController { //... }
W pliku App_Start/Startup.MobileApp.cs dodaj wywołanie metody rozszerzenia MapApiControllers , jak w poniższym przykładzie:
new MobileAppConfiguration() .MapApiControllers() .ApplyTo(config);
Można również użyć UseDefaultConfiguration()
metody rozszerzenia zamiast MapApiControllers()
. Każdy kontroler, który nie ma zastosowanego elementu MobileAppControllerAttribute , nadal może być dostępny dla klientów, ale może nie być prawidłowo używany przez klientów przy użyciu dowolnego zestawu SDK klienta aplikacji mobilnej.
Instrukcje: 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:
- Instrukcje: dodawanie uwierzytelniania do projektu serwera
- Instrukcje: używanie uwierzytelniania niestandardowego dla aplikacji
- Instrukcje: pobieranie uwierzytelnionych informacji o użytkowniku
- Instrukcje: ograniczanie dostępu do danych dla autoryzowanych użytkowników
Instrukcje: dodawanie uwierzytelniania do projektu serwera
Uwierzytelnianie można dodać do projektu serwera, rozszerzając obiekt MobileAppConfiguration i konfigurując oprogramowanie pośredniczące OWIN. Po zainstalowaniu pakietu Microsoft.Azure.Mobile.Server.Quickstart i wywołaniu metody rozszerzenia UseDefaultConfiguration możesz przejść do kroku 3.
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 wydane przez powiązaną bramę usługi App Service.
[Authorize]
Dodaj atrybut do dowolnego kontrolera lub metody, która wymaga uwierzytelniania.
Aby dowiedzieć się, jak uwierzytelniać klientów w zapleczu usługi Mobile Apps, zobacz Dodawanie uwierzytelniania do aplikacji.
Jak używać niestandardowego uwierzytelniania w Twojej 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. To umożliwi zmienną środowiskową WEBSITE_AUTH_SIGNING_KEY podczas hostingu.
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ć posolone i zhashowane hasła w bazie danych. W poniższym isValidAssertion()
przykładzie metoda (zdefiniowana gdzie indziej) jest odpowiedzialna za te kontrole.
Niestandardowe uwierzytelnianie jest udostępniane przez stworzenie ApiController i eksponowanie akcji register
oraz login
. 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 identyfikatory 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 AppServiceLoginHandler.CreateToken()
zawiera parametr audiencji i parametr wydawcy. Oba te parametry są ustawione na adres URL root 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 można uzyskać podczas hostowania w usłudze App Service, 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 roszczenia i datę wygaśnięcia. Co najmniej wystawiony token musi zawierać roszczenie podmiotu (sub).
Możesz obsługiwać standardową metodę klienta loginAsync()
, przeciążając trasę 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" });
Wskazówka
Użycie podejścia loginAsync()
gwarantuje, że token uwierzytelniania jest dołączany do każdego kolejnego wywołania usługi.
Instrukcje: 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 sekcji dostawcy w portalu Azure. Niektóre oświadczenia wymagają dodatkowej 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 System.Security.Principal
, aby udostępnić metodę rozszerzenia GetAppServiceIdentityAsync.
Instrukcje: 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.
Jak: dodać powiadomienia push do projektu serwera
Dodaj powiadomienia push do projektu serwera, rozszerzając obiekt MobileAppConfiguration i tworząc klienta punktów powiadomień.
W programie Visual Studio kliknij prawym przyciskiem myszy projekt serwera i kliknij polecenie Zarządzaj pakietami NuGet, wyszukaj ciąg
Microsoft.Azure.Mobile.Server.Notifications
, a następnie kliknij polecenie Zainstaluj.Powtórz ten krok, aby zainstalować
Microsoft.Azure.NotificationHubs
pakiet, który zawiera bibliotekę klienta usługi Notification Hubs.W App_Start/Startup.MobileApp.cs i dodaj wywołanie metody rozszerzenia AddPushNotifications() podczas inicjowania:
new MobileAppConfiguration() // other features... .AddPushNotifications() .ApplyTo(config);
Dodaj następujący kod, który tworzy klienta usługi Notification Hubs:
// Get the settings for the server project. HttpConfiguration config = this.Configuration; MobileAppSettingsDictionary settings = config.GetMobileAppSettingsProvider().GetMobileAppSettings(); // Get the Notification Hubs credentials for the Mobile App. string notificationHubName = settings.NotificationHubName; string notificationHubConnection = settings .Connections[MobileAppSettingsKeys.NotificationHubConnectionString].ConnectionString; // Create a new Notification Hub client. NotificationHubClient hub = NotificationHubClient .CreateClientFromConnectionString(notificationHubConnection, notificationHubName);
Teraz możesz użyć klienta usługi Notification Hubs do wysyłania powiadomień push do zarejestrowanych urządzeń. Aby uzyskać więcej informacji, zobacz Dodawanie powiadomień push do aplikacji. Aby dowiedzieć się więcej o usłudze Notification Hubs, zobacz Notification Hubs Overview (Omówienie usługi Notification Hubs).
Jak włączyć wysyłanie powiadomień ukierunkowanych z użyciem tagów
Usługa Notification Hubs umożliwia wysyłanie powiadomień docelowych do określonych rejestracji przy użyciu tagów. Kilka tagów jest tworzonych automatycznie:
- Identyfikator instalacji identyfikuje określone urządzenie.
- Identyfikator użytkownika, oparty na uwierzytelnionym SID, identyfikuje określonego użytkownika.
Identyfikator instalacji można uzyskać z właściwości installationId w obiekcie MobileServiceClient. W poniższym przykładzie pokazano, jak za pomocą identyfikatora instalacji dodać tag do określonej instalacji w usłudze Notification Hubs:
hub.PatchInstallation("my-installation-id", new[]
{
new PartialUpdateOperation
{
Operation = UpdateOperationType.Add,
Path = "/tags",
Value = "{my-tag}"
}
});
Wszystkie tagi dostarczone przez klienta podczas rejestracji powiadomień push są ignorowane przez backend podczas tworzenia instalacji. Aby umożliwić klientowi dodawanie tagów do instalacji, należy utworzyć niestandardowy interfejs API, który dodaje tagi przy użyciu poprzedniego wzorca.
Zobacz Tagi powiadomień push dodanych przez klienta w przykładowym quickstarcie ukończonym w usłudze App Service Mobile Apps.
Jak: Wysyłać powiadomienia push do uwierzytelnionego użytkownika
Gdy uwierzytelniony użytkownik zarejestruje się do powiadomień wypychanych, tag identyfikatora użytkownika zostanie automatycznie dodany do rejestracji. Za pomocą tego tagu można wysyłać powiadomienia push do wszystkich urządzeń zarejestrowanych przez daną osobę. Poniższy kod pobiera identyfikator SID użytkownika wysyłającego żądanie i wysyła powiadomienie wypychane szablonu do każdej rejestracji urządzenia dla tej osoby:
// Get the current user SID and create a tag for the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;
string userTag = "_UserId:" + sid;
// Build a dictionary for the template with the item message text.
var notification = new Dictionary<string, string> { { "message", item.Text } };
// Send a template notification to the user ID.
await hub.SendTemplateNotificationAsync(notification, userTag);
Podczas rejestrowania powiadomień wypychanych z uwierzytelnionego klienta upewnij się, że uwierzytelnianie zostało ukończone przed podjęciem próby rejestracji. Aby uzyskać więcej informacji, zobacz Push to users w ukończonym przykładowym projekcie szybkiego startu aplikacji mobilnych App Service dla zaplecza platformy .NET.
Instrukcje: 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
Przemysł drzewny
Możesz zapisywać do dzienników diagnostycznych usługi App Service, korzystając ze standardowego mechanizmu śledzenia ASP.NET. Przed zapisaniem w dziennikach należy włączyć diagnostykę w zapleczu aplikacji mobilnej.
Aby włączyć diagnostykę i zapisać w dziennikach:
Wykonaj kroki opisane w temacie 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 aplikacji mobilnej, aby uruchomić ścieżkę kodu z logowaniem.
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 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 w zapleczu mobilnym zainstalowano Microsoft.Azure.Mobile.Server.Authentication. Następnie w klasie uruchamiania OWIN aplikacji dodaj następujące elementy po zastosowaniu MobileAppConfiguration
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 tak, aby każdy z nich był adresem URL głównego katalogu aplikacji, używając schematu HTTPS. Podobnie należy ustawić wartość authSigningKey jako wartość klucza podpisywania aplikacji. Aby uzyskać klucz podpisywania:
- Przejdź do aplikacji w witrynie Azure Portal
- Kliknij Narzędzia, Kudu, Przejdź.
- Na witrynie Zarządzania Kudu kliknij Środowisko.
- Znajdź wartość WEBSITE_AUTH_SIGNING_KEY.
Użyj klucza podpisywania dla parametru authSigningKey w konfiguracji aplikacji lokalnej. Backend mobilny jest teraz skonfigurowany do weryfikacji tokenów podczas lokalnego działania, a klient uzyskuje token z punktu końcowego w chmurze.