RESTful Web Hizmetinin Kimliğini Doğrulama

HTTP, kaynaklara erişimi kontrol etmek için çeşitli kimlik doğrulama mekanizmalarının kullanımını destekler. Temel kimlik doğrulaması, kaynaklara yalnızca doğru kimlik bilgilerine sahip istemcilere erişim sağlar. Bu makalede, RESTful web hizmeti kaynaklarına erişimi korumak için temel kimlik doğrulamasının nasıl kullanacağız?

Not

iOS 9 ve üzerinde, Uygulama Aktarım Güvenliği (ATS), İnternet kaynakları (uygulamanın arka uç sunucusu gibi) ile uygulama arasında güvenli bağlantılar zorlar ve böylece hassas bilgilerin yanlışlıkla açığa çıkması önlenebilir. ATS, iOS 9 için yerleşik uygulamalarda varsayılan olarak etkinleştirildiğinden, tüm bağlantılar ATS güvenlik gereksinimlerine tabi olur. Bağlantılar bu gereksinimleri karşılamıyorsa özel durumla başarısız olur. İNTERNET kaynakları için protokolün ve güvenli iletişimin kullanılamaysa ATS HTTPS bu seçeneğin dışında tutulabilirsiniz. Bu, uygulamanın Info.plist dosyası güncelleştirilerek elde edilebilir. Daha fazla bilgi için bkz. Uygulama Aktarım Güvenliği.

HTTP üzerinden Kullanıcıların KimlikLerini Doğrulama

Temel kimlik doğrulaması HTTP tarafından desteklenen en basit kimlik doğrulama mekanizmasıdır ve istemcinin kullanıcı adı ve parolayı şifrelenmemiş base64 kodlanmış metin olarak göndermesini içerir. Aşağıdaki gibi çalışır:

  • Bir web hizmeti korumalı kaynak için bir istek alırsa, isteği 401 (erişim reddedildi) durum koduyla reddeder ve aşağıdaki diyagramda gösterildiği gibi WWW-Authenticate yanıt üst bilgisini ayarlar:

Temel Kimlik Doğrulaması Başarısız Oluyor

  • Bir web hizmeti, üst bilgisi doğru ayarlanmış şekilde korumalı bir kaynak için bir istek alırsa, web hizmeti isteğin başarılı olduğunu ve istenen bilgilerin yanıtta olduğunu belirten bir HTTP durum kodu 200 ile yanıt Authorization verir. Bu senaryo aşağıdaki diyagramda gösterilmiştir:

Temel Kimlik Doğrulaması Başarılı

Not

Temel kimlik doğrulaması yalnızca bir HTTPS bağlantısı üzerinden kullanılmalıdır. HTTP bağlantısı üzerinden kullanılırken, HTTP trafiği bir saldırgan tarafından Authorization yakalanırsa üst bilgi kolayca çözülebilir.

Web İsteğinde Temel Kimlik Doğrulamasını Belirtme

Temel kimlik doğrulamasının kullanımı aşağıdaki gibi belirtilir:

  1. İsteğin üst bilgisinde Authorization "Basic" dizesi eklenir.
  2. Kullanıcı adı ve parola, "username:password" biçiminde bir dizede birleştirilmiştir ve base64 kodlanır ve isteğin üst Authorization bilgisine eklenir.

Bu nedenle, 'XamarinUser' kullanıcı adı ve 'XamarinPassword' parolası ile üst bilgi şu olur:

Authorization: Basic WGFtYXJpblVzZXI6WGFtYXJpblBhc3N3b3Jk

sınıfı, HttpClient özelliği üzerinde üst bilgi değerini AuthorizationHttpClient.DefaultRequestHeaders.Authorization ayarlayın. Örnek birden çok istekte mevcut olduğundan, aşağıdaki kod örneğinde gösterildiği gibi üst bilgi her istekte değil yalnızca bir HttpClientAuthorization kez ayarlanır:

public class RestService : IRestService
{
  HttpClient _client;
  ...

  public RestService ()
  {
    var authData = string.Format ("{0}:{1}", Constants.Username, Constants.Password);
    var authHeaderValue = Convert.ToBase64String (Encoding.UTF8.GetBytes (authData));

    _client = new HttpClient ();
    _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue ("Basic", authHeaderValue);
  }
  ...
}

Ardından, bir web hizmeti işlemi için istek yapıldığında, istek üst bilgiyle imzalanır ve kullanıcının işlemi çağırma izni olup Authorization olmadığını gösterir.

Önemli

Bu kod kimlik bilgilerini sabitler olarak depolasa da, yayımlanan bir uygulamada güvenli olmayan bir biçimde depolanmaz.

Yetkilendirme Üst Bilgisi Sunucu Tarafını İşleme

REST hizmeti her eylemi özniteliğiyle [BasicAuthentication] süslemeli. Bu öznitelik, üst bilgi ayrıştırmak ve base64 ile kodlanmış kimlik bilgilerinin geçerli olup olmadığını belirlemek için kullanılır ve bunları veritabanında depolanan AuthorizationAuthorization Bu yaklaşım örnek bir hizmet için uygunsa da, genele yönelik bir web hizmetinin genişleticisini gerektirir.

IIS tarafından kullanılan temel kimlik doğrulama modülünde, kullanıcıların kimlik doğrulaması kendi kimlik Windows doğrulanır. Bu nedenle, kullanıcıların sunucunun etki alanında hesapları olmalıdır. Ancak Temel kimlik doğrulama modeli, kullanıcı hesaplarının veritabanı gibi bir dış kaynakta kimlik doğrulaması yaptığı özel kimlik doğrulamasına izin verecek şekilde yalıtabilirsiniz. Daha fazla bilgi için web sitesinin ASP.NET Web API'sinde Temel ASP.NET bakın.

Not

Temel kimlik doğrulaması, günlüğe kaydetmeyi yönetmek için tasarlanmadı. Bu nedenle, oturumun oturumunu sona erdirecek standart temel kimlik doğrulaması yaklaşımıdır.