Windows uygulamanıza kimlik doğrulaması ekleme

Genel Bakış

Bu konuda, mobil uygulamanıza bulut tabanlı kimlik doğrulaması ekleme konusu gösterilmektedir. bu öğreticide, Azure App Service tarafından desteklenen bir kimlik sağlayıcısı kullanarak Mobile Apps için Evrensel Windows Platformu (UWP) hızlı başlangıç projesine kimlik doğrulaması eklersiniz. Mobil uygulama arka ucunuz tarafından başarıyla kimlik doğrulamasından ve yetkilendirdikten sonra, Kullanıcı KIMLIĞI değeri görüntülenir.

Bu öğretici Mobile Apps hızlı başlangıcı ' nı temel alır. Kullanmaya başlayın, önce Mobile Apps ileöğreticiyi doldurmanız gerekir.

Uygulamanızı kimlik doğrulaması için kaydedin ve App Service yapılandırın

İlk olarak, uygulamanızı bir kimlik sağlayıcısının sitesinde kaydetmeniz gerekir ve ardından Mobile Apps arka ucunda sağlayıcı tarafından oluşturulan kimlik bilgilerini ayarlarsınız.

  1. Sağlayıcıya özgü talimatları izleyerek tercih ettiğiniz kimlik sağlayıcınızı yapılandırın:

  2. Uygulamanızda desteklemek istediğiniz her sağlayıcı için önceki adımları tekrarlayın.

Uygulamanızı Izin verilen dış yönlendirme URL 'Lerine ekleyin

Güvenli kimlik doğrulaması, uygulamanız için yeni bir URL şeması tanımlamanızı gerektirir. Bu, kimlik doğrulama işlemi tamamlandıktan sonra kimlik doğrulama sisteminin uygulamanıza yeniden yönlendirilmesini sağlar. Bu öğreticide, üzerinde URL şeması uygulamamız kullanırız. Ancak, seçtiğiniz herhangi bir URL şemasını kullanabilirsiniz. Bu, mobil uygulamanız için benzersiz olmalıdır. Sunucu tarafında yeniden yönlendirmeyi etkinleştirmek için:

  1. Azure portalApp Service seçin.

  2. Kimlik doğrulama/yetkilendirme menü seçeneğine tıklayın.

  3. Izin verilen dış yeniden yönlendirme URL 'lerinde, girin url_scheme_of_your_app://easyauth.callback . Bu dizedeki url_scheme_of_your_app , MOBIL uygulamanızın URL şemadır. Bir protokol için normal URL belirtimini izlemelidir (yalnızca harfler ve rakamlar kullanın ve bir harfle başlar). Mobil uygulama kodunuzu birkaç yerde URL düzeniyle ayarlamanız gerekeceğinden, seçtiğiniz dizeyi bir yere iade etmeniz gerekir.

  4. Kaydet’e tıklayın.

Kimliği doğrulanmış kullanıcılar için izinleri kısıtla

Varsayılan olarak, bir Mobile Apps arka uçtaki API 'Ler anonim olarak çağrılabilir. Daha sonra, erişimi yalnızca kimliği doğrulanmış istemcilerle kısıtlamanız gerekir.

  • Arka ucuNode.js (Azure Portal aracılığıyla) :

    Mobile Apps ayarlarınızda, kolay tablolar ' a tıklayın ve tablonuzu seçin. Izinleri Değiştir' e tıklayın, yalnızca tüm Izinler için doğrulanmış erişim ' i seçin ve Kaydet' e tıklayın.

  • .Net arka ucu (C#):

    Sunucu projesinde, denetleyiciler>TodoItemController. cs' ye gidin. [Authorize]Özniteliğini aşağıdaki gibi TodoItemController sınıfına ekleyin. Erişimi yalnızca belirli yöntemlerle kısıtlamak için, bu özniteliği sınıfı yerine yalnızca bu yöntemlere de uygulayabilirsiniz. Sunucu projesini yeniden yayımlayın.

      [Authorize]
      public class TodoItemController : TableController<TodoItem>
    
  • Arka ucaNode.js (Node.js kodu aracılığıyla) :

    Tablo erişimi için kimlik doğrulaması gerektirmek için aşağıdaki satırı Node.js sunucusu betiğine ekleyin:

      table.access = 'authenticated';
    

    Daha fazla ayrıntı için bkz. nasıl yapılır: tablolara erişim için kimlik doğrulaması gerektirme. Hızlı başlangıç kodu projesini sitenizden nasıl indirileceği hakkında bilgi edinmek için bkz. nasıl yapılır: Node.js arka uç hızlı başlangıç kodu projesini git kullanarak indirme.

Şimdi, arka ucunuza anonim erişimin devre dışı bırakıldığını doğrulayabilirsiniz. UWP uygulama projesi, başlangıç projesi olarak ayarlanmış şekilde, uygulamayı dağıtıp çalıştırın; uygulama başladıktan sonra 401 (yetkisiz) durum koduna sahip işlenmemiş bir özel durumun yapıldığını doğrulayın. Bunun nedeni, uygulamanın mobil uygulama kodunuza kimliği doğrulanmamış bir kullanıcı olarak erişmeye çalıştığı, ancak TodoItem tablosunun artık kimlik doğrulaması gerektirdiğinden meydana gelir.

Bundan sonra, App Service kaynakları isteyerek önce kullanıcıların kimliğini doğrulamak üzere uygulamayı güncelleşolursunuz.

Uygulamaya kimlik doğrulaması ekleme

  1. UWP uygulama proje dosyasında MainPage. xaml. cs ve aşağıdaki kod parçacığını ekleyin:

     // Define a member variable for storing the signed-in user. 
     private MobileServiceUser user;
    
     // Define a method that performs the authentication process
     // using a Facebook sign-in. 
     private async System.Threading.Tasks.Task<bool> AuthenticateAsync()
     {
         string message;
         bool success = false;
         try
         {
             // Change 'MobileService' to the name of your MobileServiceClient instance.
             // Sign-in using Facebook authentication.
             user = await App.MobileService
                 .LoginAsync(MobileServiceAuthenticationProvider.Facebook, "{url_scheme_of_your_app}");
             message =
                 string.Format("You are now signed in - {0}", user.UserId);
    
             success = true;
         }
         catch (InvalidOperationException)
         {
             message = "You must log in. Login Required";
         }
    
         var dialog = new MessageDialog(message);
         dialog.Commands.Add(new UICommand("OK"));
         await dialog.ShowAsync();
         return success;
     }
    

    Bu kod, kullanıcının kimliğini Facebook oturumu ile doğrular. Facebook dışında bir kimlik sağlayıcısı kullanıyorsanız, yukarıdaki Mobileserviceauthenticationprovider değerini sağlayıcınızın değerine değiştirin.

  2. MainPage. xaml. cs içindeki OnNavigatedTo () metodunu değiştirin. Ardından, uygulamaya kimlik doğrulaması tetikleyen bir oturum açma düğmesi ekleyeceksiniz.

     protected override async void OnNavigatedTo(NavigationEventArgs e)
     {
         if (e.Parameter is Uri)
         {
             App.MobileService.ResumeWithURL(e.Parameter as Uri);
         }
     }
    
  3. Aşağıdaki kod parçacığını MainPage. xaml. cs öğesine ekleyin:

     private async void ButtonLogin_Click(object sender, RoutedEventArgs e)
     {
         // Login the user and then load data from the mobile app.
         if (await AuthenticateAsync())
         {
             // Switch the buttons and load items from the mobile app.
             ButtonLogin.Visibility = Visibility.Collapsed;
             ButtonSave.Visibility = Visibility.Visible;
             //await InitLocalStoreAsync(); //offline sync support.
             await RefreshTodoItems();
         }
     }
    
  4. MainPage. xaml proje dosyasını açın, Kaydet düğmesini tanımlayan öğeyi bulun ve aşağıdaki kodla değiştirin:

     <Button Name="ButtonSave" Visibility="Collapsed" Margin="0,8,8,0" 
             Click="ButtonSave_Click">
         <StackPanel Orientation="Horizontal">
             <SymbolIcon Symbol="Add"/>
             <TextBlock Margin="5">Save</TextBlock>
         </StackPanel>
     </Button>
     <Button Name="ButtonLogin" Visibility="Visible" Margin="0,8,8,0" 
             Click="ButtonLogin_Click" TabIndex="0">
         <StackPanel Orientation="Horizontal">
             <SymbolIcon Symbol="Permissions"/>
             <TextBlock Margin="5">Sign in</TextBlock> 
         </StackPanel>
     </Button>
    
  5. Aşağıdaki kod parçacığını App. xaml. cs öğesine ekleyin:

     protected override void OnActivated(IActivatedEventArgs args)
     {
         if (args.Kind == ActivationKind.Protocol)
         {
             ProtocolActivatedEventArgs protocolArgs = args as ProtocolActivatedEventArgs;
             Frame content = Window.Current.Content as Frame;
             if (content.Content.GetType() == typeof(MainPage))
             {
                 content.Navigate(typeof(MainPage), protocolArgs.Uri);
             }
         }
         Window.Current.Activate();
         base.OnActivated(args);
     }
    
  6. Package. appxmanifest dosyasını açın, Bildirimler' e gidin, kullanılabilir bildirimler açılan listesinde protokol ' ü seçin ve düğme Ekle ' ye tıklayın. Şimdi protokol bildiriminin özelliklerini yapılandırın. Görünen ad' ta, uygulamanızın kullanıcılarına göstermek istediğiniz adı ekleyin. Adalanına {url_scheme_of_your_app} 'nizi ekleyin.

  7. Uygulamayı çalıştırmak için F5 tuşuna basın, oturum aç düğmesine tıklayın ve seçtiğiniz kimlik sağlayıcınızla birlikte uygulamada oturum açın. Oturum açma işlemi başarılı olduktan sonra, uygulama hatasız çalışır ve arka ucunuzu sorgulayabilir ve verilerde güncelleştirmeler yapabilirsiniz.

Kimlik doğrulama belirtecini istemcide depolayın

önceki örnekte, istemcinin her başlatıldığında hem kimlik sağlayıcısı hem de App Service ile iletişim kurabilmesi gereken standart bir oturum açma gösterildi. Bu yöntem verimsiz değildir, kullanım ile ilgili konular, birçok müşteri aynı anda uygulamanızı başlatmaya çalışır. daha iyi bir yaklaşım, App Service tarafından döndürülen yetkilendirme belirtecini önbelleğe almak ve sağlayıcı tabanlı bir oturum açma kullanmadan önce bunu kullanmayı denemenin bir yaklaşımdır.

Not

İstemci tarafından yönetilen veya hizmet tarafından yönetilen kimlik doğrulaması kullanıyor olinizden bağımsız olarak, App Services tarafından verilen belirteci önbelleğe alabilirsiniz. Bu öğretici, hizmet tarafından yönetilen kimlik doğrulaması kullanır.

  1. MainPage. xaml. cs proje dosyasında aşağıdaki using deyimlerini ekleyin:

     using System.Linq;        
     using Windows.Security.Credentials;
    
  2. Kimlik doğrulayan Teasync yöntemini şu kodla değiştirin:

     private async System.Threading.Tasks.Task<bool> AuthenticateAsync()
     {
         string message;
         bool success = false;
    
         // This sample uses the Facebook provider.
         var provider = MobileServiceAuthenticationProvider.Facebook;
    
         // Use the PasswordVault to securely store and access credentials.
         PasswordVault vault = new PasswordVault();
         PasswordCredential credential = null;
    
         try
         {
             // Try to get an existing credential from the vault.
             credential = vault.FindAllByResource(provider.ToString()).FirstOrDefault();
         }
         catch (Exception)
         {
             // When there is no matching resource an error occurs, which we ignore.
         }
    
         if (credential != null)
         {
             // Create a user from the stored credentials.
             user = new MobileServiceUser(credential.UserName);
             credential.RetrievePassword();
             user.MobileServiceAuthenticationToken = credential.Password;
    
             // Set the user from the stored credentials.
             App.MobileService.CurrentUser = user;
    
             // Consider adding a check to determine if the token is 
             // expired, as shown in this post: https://aka.ms/jww5vp.
    
             success = true;
             message = string.Format("Cached credentials for user - {0}", user.UserId);
         }
         else
         {
             try
             {
                 // Sign in with the identity provider.
                 user = await App.MobileService
                     .LoginAsync(provider, "{url_scheme_of_your_app}");
    
                 // Create and store the user credentials.
                 credential = new PasswordCredential(provider.ToString(),
                     user.UserId, user.MobileServiceAuthenticationToken);
                 vault.Add(credential);
    
                 success = true;
                 message = string.Format("You are now signed in - {0}", user.UserId);
             }
             catch (MobileServiceInvalidOperationException)
             {
                 message = "You must sign in. Sign-In Required";
             }
         }
    
         var dialog = new MessageDialog(message);
         dialog.Commands.Add(new UICommand("OK"));
         await dialog.ShowAsync();
    
         return success;
     }
    

    Bu kimlik doğrulayan ekip eşitlemesürümünde, uygulama, hizmete erişmek Için passwordkasasında depolanan kimlik bilgilerini kullanmaya çalışır. Depolanan bir kimlik bilgisi olmadığında düzenli bir oturum açma işlemi de gerçekleştirilir.

    Not

    Önbelleğe alınmış bir belirtecin süresi dolmuşsa ve uygulama kullanımda olduğunda kimlik doğrulamasından sonra belirteç süre sonu da oluşabilir. Belirtecin dolup dolmadığını belirleme hakkında bilgi edinmek için bkz. süre aşımına uğradı kimlik doğrulama belirteçlerini denetleme. süresi dolan belirteçlerle ilgili yetkilendirme hatalarını işlemeye yönelik bir çözüm için, Azure Mobile Services yönetilen SDK 'da gönderi Önbelleğe Alma ve süresi dolan belirteçleri işlemebölümüne bakın.

  3. Uygulamayı iki kez yeniden başlatın.

    İlk başlangıçta, sağlayıcı ile oturum açma 'nın yeniden gerekli olduğuna dikkat edin. Ancak ikinci yeniden başlatmada önbelleğe alınan kimlik bilgileri kullanılır ve oturum açma atlanır.

Sonraki adımlar

Bu temel kimlik doğrulama öğreticisini tamamladığınıza göre, aşağıdaki öğreticilerden birine devam etmeyi göz önünde bulundurun:

  • Uygulamanıza anında iletme bildirimleri ekleme
    Uygulamanıza anında iletme bildirimleri desteği eklemeyi ve anında iletme bildirimleri göndermek için Azure Notification Hubs’ı kullanmak üzere Mobile App arka ucunuzu yapılandırmayı öğrenin.
  • Uygulamanız için çevrimdışı eşitlemeyi etkinleştirme
    Mobil Uygulama arka ucu kullanarak uygulamanıza çevrimdışı destek eklemeyi öğrenin. Çevrimdışı eşitleme, son kullanıcıların bir mobil uygulamayla etkileşime geçmesini sağlar — ağ bağlantısı olmasa bile verileri görüntüleme, ekleme veya değiştirme.