Aracılığıyla paylaş


RESTful Web Hizmetinin Kimliğini Doğrulama

HTTP, kaynaklara erişimi denetlemek için çeşitli kimlik doğrulama mekanizmalarının kullanılması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 kullanılacağı gösterilmektedir.

Not

iOS 9 ve üzeri cihazlarda, App Transport Security (ATS), İnternet kaynakları (uygulamanın arka uç sunucusu gibi) ile uygulama arasında güvenli bağlantılar zorlayarak hassas bilgilerin yanlışlıkla açıklanmasını önler. iOS 9 için oluşturulan uygulamalarda ATS varsayılan olarak etkinleştirildiğinden, tüm bağlantılar ATS güvenlik gereksinimlerine tabi olacaktır. Bağlantılar bu gereksinimleri karşılamıyorsa, bir özel durumla başarısız olur. İnternet kaynakları için protokolün ve güvenli iletişimin HTTPS kullanılması mümkün değilse ATS devre dışı bırakılabilir. 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 Kimliğini 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ı bir kaynak için istek alırsa, isteği http durum kodu 401 (erişim reddedildi) ile reddeder ve aşağıdaki diyagramda gösterildiği gibi WWW-Authenticate yanıt üst bilgisini ayarlar:

Basic Authentication Failing

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

Basic Authentication Succeeding

Not

Temel kimlik doğrulaması yalnızca bir HTTPS bağlantısı üzerinden kullanılmalıdır. HTTP bağlantısı üzerinden kullanıldığında, Authorization HTTP trafiği bir saldırgan tarafından 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. "Temel" dizesi isteğin Authorization üst bilgisine eklenir.
  2. Kullanıcı adı ve parola, "username:password" biçiminde bir dize halinde birleştirilir. Bu, base64 kodlanır ve isteğin Authorization üst bilgisine eklenir.

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

Authorization: Basic WGFtYXJpblVzZXI6WGFtYXJpblBhc3N3b3Jk

HttpClient sınıfı özelliğinde AuthorizationHttpClient.DefaultRequestHeaders.Authorization üst bilgi değerini ayarlayabilir. HttpClient Örnek birden çok istekte bulunduğundan, Authorization üst bilginin aşağıdaki kod örneğinde gösterildiği gibi her istekte bulunmak yerine yalnızca bir kez ayarlanması gerekir:

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şlemine istek yapıldığında istek üst bilgiyle Authorization imzalanır ve kullanıcının işlemi çağırma izni olup olmadığını gösterir.

Önemli

Bu kod kimlik bilgilerini sabit olarak depolasa da, yayımlanmış bir uygulamada güvenli olmayan bir biçimde depolanmamalıdır.

Yetkilendirme Üst Bilgisi Sunucu Tarafı İşleniyor

REST hizmeti her eylemi özniteliğiyle [BasicAuthentication] süslemelidir. Bu öznitelik, üst bilgiyi ayrıştırmak Authorization ve base64 kodlanmış kimlik bilgilerinin geçerli olup olmadığını belirlemek için web.config dosyasında depolanan değerlerle karşılaştırılarak kullanılır. Bu yaklaşım örnek bir hizmet için uygun olsa da genel kullanıma yönelik bir web hizmeti için genişletme gerektirir.

IIS tarafından kullanılan temel kimlik doğrulama modülünde, kullanıcıların Windows kimlik bilgilerine göre kimlik doğrulaması yapılı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ının yapıldığı özel kimlik doğrulamasına izin verecek şekilde yapılandırılabilir. Daha fazla bilgi için ASP.NET web sitesindeki ASP.NET Web API'sinde Temel Kimlik Doğrulaması bölümüne bakın.

Not

Temel kimlik doğrulaması oturumu kapatmayı yönetmek için tasarlanmamıştır. Bu nedenle oturumu kapatmaya yönelik standart temel kimlik doğrulama yaklaşımı oturumu sonlandırmaktır.