Bir API http temel kimlik doğrulamasını nasıl kullanmalıdır?


17

Bir API bir istemcinin kimlik doğrulaması gerektirdiğinde, kullanılan iki farklı senaryo gördüm ve durumum için hangi durumda kullanmam gerektiğini merak ediyorum.

Örnek 1. Üçüncü tarafların HTTP Basic kullanarak bir belirteç ve sır ile kimlik doğrulaması yapmasına izin vermek için şirket tarafından bir API sunulmaktadır.

Örnek 2. API, son kullanıcının kimliğini doğrulamak için HTTP Basic üzerinden bir kullanıcı adı ve parola kabul eder. Genellikle gelecekteki talepler için bir token geri alırlar.

Kurulumum: Bir mobil ve web uygulaması için arka uç olarak kullandığım bir JSON API'm olacak. Hem mobil hem de web uygulamasının bir jeton ve sırrı göndermesi iyi bir uygulama gibi görünüyor, böylece yalnızca bu iki uygulama herhangi bir üçüncü tarafı engelleyen API'ya erişebilir.

Ancak mobil ve web uygulaması kullanıcıların giriş yapmasına ve yayın göndermesine, verilerini görüntülemesine vb. İzin verir. Bu yüzden her istekte HTTP Temel yoluyla giriş yapmalarını isterdim.

Bir şekilde bu yöntemlerin bir kombinasyonunu mu kullanıyorum yoksa her istekte yalnızca son kullanıcı kimlik bilgilerini (kullanıcı adı ve jeton) gönderiyor muyum? Yalnızca son kullanıcı kimlik bilgilerini gönderirsem, istemcideki bir çerezde saklayabilir miyim?


Çerezlerin HTTP protokolünün bir parçası olmadığını ve yalnızca ortak bir tarayıcı özelliği olduğunu unutmayın. Web için konuşlandırmıyorsanız, bunları unutun.
Yam Marcovic

Çerezler önerilmiyorsa, API'ye geçmek için kredileri nasıl / nerede saklarsınız?
Paul Sylling

Çerezler, tarayıcı kullanıcılarının oturum belirteçlerini sorunsuz bir şekilde saklaması için bir yoldur. Bir geliştiriciyle etkileşime giriyorsanız, bunun sorunsuz olması gerekmez. "Bilet" veren bir genel bağlantı hizmeti oluşturabilirsiniz ve geliştiriciler biletlerini bellekte veya istedikleri yerde tutabilirler. Pratik bir web hizmetleri deneyimim olmadığını ve muhtemelen bu tür şeyler için standart çözümler olduğunu unutmayın.
Yam Marcovic

Son kullanıcı yetkilendirme ve api yetkilendirme ile ilgili sorumun düşünceleri nelerdir? Bu konuda hala emin değilim
Paul Sylling

Yanıtlar:


7

HTTP temel kimlik doğrulaması, her kaynak isteğinde kullanıcı adı ve parolanın gönderilmesini gerektirir. Kullanıcı adı: şifre "Yetkilendirme" istek üstbilgisi "Temel" ön ekine sahip base64 kodlu dize geçirilir. Tüm http iletişiminiz şifrelenmişse (ssl aracılığıyla) Yetkilendirme üstbilgisi bilgilerinin saldırganlar tarafından kolayca kullanılamaması gerekir, çünkü iletişim kuramazlar.

Temel kimlik doğrulamalı SSL şifreli http yeterli olmalıdır.


2
buna bir örnek verebilir misiniz? İhtiyacım olan şey, şu anda ÇOK sıkışmış ...
14'te

0

OAuth / OpenID, token / secret ile birlikte çalışabilir mi?

Son zamanlarda aşağıdaki senaryoyu düşündüm:

  • Web Uygulaması Kullanıcı Arabirimi
  • Temel REST API'sı
  • REST API'sine erişen Mobil Cihaz Uygulamaları

Basit bir test olarak şunları yapabildim:

  • OAuth kullanarak Web Uygulaması aracılığıyla kullanıcıların kimliğini doğrulama
  • OAuth aracılığıyla yetkilendirilen REST API'sı, bir sır oluşturulmasına ve istemciye iletilmesine neden olur
  • Mobil Cihaz daha sonra OAuth aracılığıyla kimlik doğrulaması yapar ve ardından REST API'sı tarafından gizli olarak yetkilendirilir.

Bu, Mobil Cihaz Uygulamasının Web Ön Ucu (aynı hesap) ile aynı kimlik bilgileriyle kimlik doğrulamasına ve aynı zamanda API'ya erişim yetkisine sahip olmasına olanak tanır.


1
Yani örneğinizde sadece kullanıcı kimlik doğrulaması yapıyor. API'ya (web uygulaması, mobil uygulama) çağrı yapan müşteriler, kim olduklarını doğrulamıyor. Teorik olarak, API herkese açıktır ve herhangi bir uygulama bir kullanıcı adı ve şifre gönderebilir ve potansiyel olarak bir jeton geri alabilir
Paul Sylling

Kullanıcı Uygulama üzerinden kimlik doğrulaması yapıyor ve uygulama kullanıcı adına arama yapıyor. Kimlik doğrulama işlemi, uygulamanın geçtiği simgeyi türetir.
Brendan Green
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.