WP REST API Kullanarak OAuth Kimlik Doğrulaması Nasıl Kurulur ve Kullanılır

Yayınlanan: 2016-11-30
wordpress dinlenme API kurmak
@Cloudways'i takip edin

WordPress REST API söz konusu olduğunda, OAuth en yaygın kimlik doğrulama işleme sağlayıcısıdır.

OAuth kimlik doğrulaması yapıldığında, kullanıcılar önce web sitesinde kullanılan WordPress oturum açma formu aracılığıyla oturum açar. ancak bu oturum açma ayrıca istemcilere istekleri kendi adlarına işleme yetkisi verir ve sonraki tüm istekler OAuth belirteçleri aracılığıyla doğrulanır. Bu belirteçler, tüm API erişim isteklerini yönetmek için de kullanılır. Bu erişim herhangi bir noktada iptal edilebilir.

OAuth kimlik doğrulama işleminin belki de en önemli kullanımı, kullanıcıların kimlik bilgilerini açığa çıkarmadan REST API isteklerinin güvenli bir şekilde işlenmesidir. Bu, kimlik bilgilerinin sıklıkla değiştirildiği üretim sunucularında özellikle önemlidir. Bu tür senaryolarda, OAuth kimlik doğrulaması, sık oturum açma kimlik bilgileri isteğini işlemek için güvenli bir prosedür sağlamak için kullanılır.

  • Geleneksel OAuth Kimlik Doğrulamasına Karşı
  • OAuth Kimlik Doğrulama İş Akışı
  • OAuth Kimlik Doğrulamasının Kurulumu
  • OAuth API'sinin Kullanılabilirliğini Değerlendirme
  • Uygulamalar Oluşturma ve Yönetme
  • OAuth Kimlik Bilgileri Oluşturmak için Müşteri CLI'si
  • OAuth Kimlik Bilgileri Oluşturmak için HTTP İstemcisi
  • Geçici Kimlik Bilgileri Edinme
  • Kullanıcı Yetkilendirmesi
  • Jeton Değişimi
  • Bir Test Kimliği Doğrulanmış Talebi Gönderme

Geleneksel OAuth Kimlik Doğrulamasına Karşı

OAuth kimlik doğrulamasının önemini anlamak için geleneksel ve OAuth kimlik doğrulama modelini anlamak önemlidir.

Geleneksel kimlik doğrulama modelinde iki temel öğe vardır; Müşteri ve Kaynak/Hizmet Sağlayıcı. İstemci bir web uygulaması, hizmet veya kullanıcı olabilirken, Kaynak/Hizmet Sağlayıcı erişim kısıtlı bir ortamda istenen kaynaklara veya hizmetlere sahiptir.

İstemci belirli bir kaynağa ihtiyaç duyduğunda, uygun kimlik bilgilerini sağlayarak Kaynak Sağlayıcı ile kimliğini doğrular. Bu basit bir süreç olsa da, büyük bir güvenlik ihlali riski de vardır.

Buna karşılık, OAuth kimlik doğrulama modeli, üç varlıkla biraz daha karmaşıktır; Kullanıcı adına hareket eden İstemci, bir kaynağa erişim gerektiren Kullanıcı ve kaynağı koruyan Sunucu.

Üç varlık olduğundan, süreç üç aşamalı kimlik doğrulama olarak bilinir. Ancak, İstemci ve Kullanıcının aynı varlıklar olduğu durumlarda, kimlik doğrulama işlemi iki aşamalı kimlik doğrulama olur.

OAuth Kimlik Doğrulama İş Akışı

İş Akışı

  • İstemci , Sunucuya erişmek için Kullanıcı yetkisini ister.
  • Kullanıcı talebi kabul ederse, Müşteri daha fazla ilerleme hakkını alır.
  • Müşteri , kimliğini ve yetkisini İstemciden Yetkilendirme Sunucusuna (API) sunar ve bir belirteç ister.
  • Kimliğin ve yetkinin başarılı bir şekilde doğrulanması durumunda, Yetkilendirme Sunucusu (API), İstemciye bir erişim belirteci verir. Bu noktada, kimlik doğrulama tamamlanmıştır.
  • Ardından, İstemci belirli bir kaynağı istemek için Sunucuya yaklaşır. Bu noktada, İstemci erişim belirtecini de
  • Erişim belirteci doğrulanırsa, Sunucu istenen kaynağa erişim izni verir.

İstemci, İstek Belirteci için imzalanmış isteği başlatır. Bu istek, Geçici Kimlik Bilgileri olarak da bilinir. İstek, ilgili uç nokta URI'sine gönderilir. Bu istek birkaç önemli parametreden oluşur:

  • oauth_consumer_key : Bu anahtar, isteği oluşturan uygulamayı tanımlar.
  • oauth_timestamp : Sunucular, nonces depolamasının optimizasyonu için bu zaman damgasını kullanır.
  • oauth_nonce : Bu, her bireysel istek için oluşturulan benzersiz uygulama belirtecidir.
  • oauth_signature : API isteğinin bu önemli kısmı, isteğin tüm bileşenlerinin ve bazı OAuth değerlerinin karmasıdır .
  • oauth_signature_method : OAuth eklentisi tek bir imza yöntemi sunar: HMAC-SHA1.
  • oath_callback : Yetkilendirmeden sonra kullanıcının yeniden yönlendirildiği URL. İstek doğrulanır ve aşağıdaki parametrelere sahip bir İstek Simgesi verilir.
  • oauth_token : Bu, Yetkilendirme Sunucusunun yanıtından çıkarılan uygulama belirtecidir. Bu belirteç daha sonra API sunucusuna gönderilir.
  • oauth_token_secret : Bu, kullanıcı şifresine benzer. Talep daha sonra Müşteri tarafından yetkilendirilir. Bunun için bir istek URI'si oluşturulur ve sunucu yetkilendirme bitiş noktası URI'sine oauth_token eklenir. Kullanıcı, uygun kimlik bilgilerini sağlayarak bu isteği göndermeye izin verir.

İlk adımda oauth_callback URI'sinin mevcut olması durumunda, sunucu, sorgu dizesine aşağıdaki parametreler eklenerek URI'ye yeniden yönlendirilir:

  • oauth_token : jeton zaten var.
  • oauth_verifier : kaynak sahibinin kimliğini istemciye doğrular.

İlk adımda oauth_callback URI'si sağlanmadıysa, sunucu oauth_verifier değerini gönderir, böylece kaynak sahibi istemciyi manuel olarak bilgilendirebilir.

oauth_verfier aldıktan sonra, istemci sunucudan belirteç kimlik bilgilerini ister. Bu, Belirteç İsteği uç noktası URI'sine yapılan bir istek biçimini alır. Bu istek aşağıdaki parametreleri içerir:

  • oauth_token
  • oauth_verfier
  • oauth_consumer_key
  • oauth_signature
  • oauth_signature_method
  • oauth_nonce
  • oauth_version

OAuth Kimlik Doğrulamasının Kurulumu

WordPress bağlamında, OAuth kimlik doğrulaması, WordPress için OAuth kimlik doğrulama API'sı yüklenerek uygulanır. Bu, OAuth 1.0a belirtimlerine dayanır ve aslında bu belirtimleri ek bir wp_scope parametresiyle genişletir. Bu parametre Geçici Kimlik Bilgisi İsteği uç noktasına gönderilir.

Eklenti, WP REST API ekibinden Github'da mevcuttur. Şu anda, sürüm 4.4 ve üstü desteklenmektedir.

/wp-content/plugins/ dizinine geçerek eklentiyi klonlama işlemine başlayacağım:

 git klonu https://github.com/WP-API/OAuth1.git 

Git Kurulumu

İndirme işlemi tamamlandıktan sonra eklentiyi WordPress CLI aracılığıyla etkinleştirin:

 wp eklentisi OAuth1'i etkinleştir

WordPress CLI'yi kullanmak istemiyorsanız, WordPress Admin >> Plugins'e giderek menüden eklentiyi etkinleştirebilirsiniz. Alternatif olarak, WP CLI kullanmak istemiyorsanız tarayıcınızın WordPress yönetici eklentileri bölümüne giderek de etkinleştirebilirsiniz.

OAuth API'sinin Kullanılabilirliğini Değerlendirme

OAuth anlaşmasını başlatmadan önce, API'nin sunucuda etkin olup olmadığını kontrol edeceğim. Bu, kullanıcıya basit bir GET isteği göndererek yapılır. /wp-json/ bitiş noktası ve ardından sunucu tarafından gönderilen yanıtı analiz eder.

 http://Sunucu-Dev/wp-json/ ALIN

Bu, aşağıdaki gibi bir JSON yanıtı döndürür:

kimlik doğrulama ile

Buradaki odak noktam , kimlik doğrulama özelliği değerindeki oauth1 değeridir. Bu nesne, tanımlanan aşağıdaki özelliklere sahiptir:

  • request : Geçici Kimlik Bilgisi İsteği uç noktası
  • yetkilendir : Kaynak Sahibi Yetkilendirme uç noktası
  • erişim : Belirteç İsteği uç noktası
  • version : kullanılan OAuth sürümü

Bir site için OAuth API'si etkinleştirilmemişse, sunucu yanıtı boş bir yetkilendirme özelliği değeri içerir.

kimlik doğrulama olmadan

Uygulamalar Oluşturma ve Yönetme

İlk adım, OAuth1.0 eklentisinin doğru şekilde kurulduğundan ve etkinleştirildiğinden emin olmaktır.

Ardından, WordPress Admin >> Kullanıcılar >> Uygulamalar bölümüne giderek uygulamalar oluşturabilir ve yönetebilirim.

başvuru formunu kullan

Bu Kayıtlı Başvurular sayfasında, Yeni Ekle düğmesine tıklayarak ve ardından aşağıdaki üç alanı doldurarak yeni bir başvuru kaydedeceğim:

  1. İstemci Adı: Yetkilendirilmiş Başvurular bölümünde ve yetkilendirme işlemi sırasında görünen Müşterinin adı.
  2. Açıklama : İstemcinin isteğe bağlı açıklaması.
  3. Geri arama URL'si : Geri arama URL'si, geçici kimlik bilgileri oluşturulurken kullanılır.

Müşteriyi Kaydet düğmesi tıklanarak oluşturulduktan sonra, bu belirli istemci için Müşteri Anahtarı ve İstemci Sırrı parametreleri sayfanın altında görünecektir.

yemin belgesi

Şimdi aşağıdaki komutu çalıştırarak istemcideki depoyu klonlayacağım:

 git klonu https://github.com/WP-API/client-cli 

Müşteri CLI'si

Şimdi klonlanmış dizine gidin ve Composer'ı kullanarak paket bağımlılıklarını kurun:

 cd istemci-cli
besteci kurulumu

Her şey yolunda giderse, komut satırı aşağıdakine benzer bir şey göstermelidir:

besteci kurulumu

OAuth Kimlik Bilgileri Oluşturmak için Müşteri CLI'si

OAuth yetkilendirme sürecini başlatmak için önce sunucudan aşağıdaki parametreleri alacağım:

  • oauth_consumer_key
  • oauth_consumer_secret

Bu, terminal aracılığıyla oluşturulacak ve aşağıdaki WordPress CLI komutunu çalıştıracaktır:

 wp oauth1 ekle

Anahtar ve Sır , oauth_consumer_key'dir ve sırasıyla oauth_consumer_secret .

Şimdi istemciyi WordPress sitesine bağlamam gerekiyor. İstemcide, istemci-cli dizinine (daha önce klonlanmıştır) gidin ve aşağıdaki komutu çalıştırın:

 wp --require=client.php api oauth1 http://Server-Dev/'i bağlayın --key=<buraya anahtarınız> --secret=<buraya sırrınız>

Yukarıdaki komutta URL'yi, anahtarı ve sırrı değiştirin. Çıktı aşağıdaki gibi olmalıdır:

 wp --require=client.php api oauth1 http://sunucunuz/wordpress-api/'yi bağlayın --key=<anahtarınız> --secret=<gizli kodunuz>
Tarayıcınızda açın: http://your-server/wordpress-api/oauth1/authorize?oauth_token=<your-token>
Onay kodunu giriniz:

Sunucu tarafından verilen URL'ye gidin ve Yetkilendir düğmesini tıklayarak kimlik doğrulaması yapın:

WP REST API'sini bağlayın

Bir sonraki ekranda doğrulama jetonu (veya oauth_verifier) ​​ile karşılaşacaksınız:

Yetkilendirme Simgesi

Doğrulayıcıyı kopyalayın ve terminale yapıştırın. Temel olarak sırasıyla oauth_token ve oauth_token_secret olan bir Key ve Secret verilecektir:

OAuth Kimlik Bilgileri Oluşturmak için HTTP İstemcisi

OAuth 1.0a sunucu eklentisi standart üç aşamalı akışı izlediğinden, OAuth kimlik bilgilerinin oluşturulması aşağıdaki adımları içerir:

  • Geçici kimlik bilgilerinin alınması
  • Kullanıcı yetkileri
  • Jeton değişimi

Geçici Kimlik Bilgileri Edinme

Geçici kimlik bilgilerini almak için /oauth1/request uç noktasına bir POST isteği göndereceğim. Bir sunucu rotayı kendi başına değiştirebileceğinden, bu uç noktanın otomatik olarak keşfedilebilir olması gerektiğini unutmayın.

POST isteği, uygulama için bir tüketici kaydederken elde edilen ve oauth_consumer_secret parametrelerini içermelidir. İstek, oauth_callback parametresini de içerebilir ve bu geri arama URL'si, uygulama kaydedilirken sağlanan geri arama URL'sinin şeması, ana bilgisayarı, bağlantı noktası ve yolu ile eşleşmelidir.

oauth_consumer_key ve oauth_consumer_secret parametrelerine ek olarak, istek oauth_signature ve oauth_signature_method parametrelerini de içermelidir .

Postacı kullanırken, oauth_signature otomatik olarak oluşturulur. Sadece oauth_signature_method parametresinden bahsetmem gerekiyor. Şu anda, OAuth sunucu eklentisi tarafından yalnızca HMAC-SHA1 imza yöntemi desteklenmektedir.

Şimdi Postman'ı geçici belirteç kimlik bilgileri uç noktasına bir POST isteği gönderecek şekilde yapılandıracağım. Ardından, Yetkilendirme sekmesinde, açılır menüden OAuth 1.0 seçeneğini belirleyin. Tüketici Anahtarı ve Tüketici Sırrı alanlarını tüketici tarafından sağlanan değerlerle doldurun. Son olarak Signature Method seçeneğinin HMAC-SHA1 olarak ayarlandığını kontrol edin.

Kullanıcı Yetkilendirmesi

Kullanıcı yetkilendirme adımı için tarayıcıda kaynak sahibi yetkilendirme uç noktasını açacağım ve oauth_token'i ileteceğim ve sorgu parametreleri olarak önceki adımda elde edildiği gibi oauth_token_secret :

 http://server-dev/oauth1/authorize?oauth_token=<token_here>&oauth_token_secret=<secret_here> 

Bağlantıyı yetkilendir

Yetkilendir düğmesine tıklayarak uygulamayı yetkilendirin . Bir sonraki ekran bir doğrulama belirteci sunacaktır. Bu belirteç artık bir sonraki adımda bir oauth_verifier belirteci olarak işlev görecektir .

Kullanıcı istemciyi yetkilendirdikten sonra uygulama, Kullanıcılar > Profiliniz sayfasındaki Yetkili Uygulamalar bölümünde görünecektir.

Jeton Değişimi

Yetkilendirme sekmesinde tekrar OAuth 1.0 seçeneğini kullanarak Tüketici Anahtarı ve Tüketici Sırrı alanlarını tüketici tarafından sağlanan değerlerle doldurun. Token ve Token Secret alanlarına oauth_token ve oauth_token_secret parametrelerinin (geçici kimlik bilgileri) değerini girin .

URL'deki parametreleri sorgu parametreleri olarak da iletebildiğim için, oauth_verifier parametresini URL'ye aşağıdaki gibi ekleyin:

 http://server-dev/oauth1/access?oauth_verifier=<oauth_verifier_value>

Tüm parametreler yerindeyken, Gönder düğmesine tıklayarak isteği gönderin. Her şey yolunda giderse sunucu, oauth_token ve o auth_token_secret parametrelerini içeren yanıt gövdesiyle birlikte bir 200 – OK durum kodu döndürür .

 oauth_token=<oauth_token_value>&oauth_token_secret=<oauth_secret_value>

Bu noktada, daha önce edinilen geçici jetonlar atılır ve artık kullanılamaz.

Yeni oauth_token ve oauth_token_secret parametreleri, kimliği doğrulanmış istekler oluşturmak için istemcide kullanabileceğiniz OAuth kimlik bilgileridir.

Bir Test Kimliği Doğrulanmış Talebi Gönderme

Artık belirteç kimlik bilgilerim olduğuna göre, Postacıyı kullanarak sunucuya bir test isteği göndereceğim. İstek aşağıdaki parametreleri gerektirecektir:

Başlamadan önce aşağıdakilere sahip olmanız gerekir:

  • oauth_consumer_key
  • oauth_consumer_secret
  • oauth_token
  • oauth_token_secret

Postacı'daki Yetkilendirme sekmesinin altındaki açılır menüden OAuth 1.0'ı seçin.

yetki

Tüm alanları doldurduktan sonra, İsteği Güncelle düğmesine tıklayın. Parametreleri sorgu dizesine eklemek yerine isteğin başlığına göndermek için Başlığa paragraf ekle seçeneğini işaretleyin.

İstek başarılı olursa, sunucu bir 200 – OK durum kodu gönderir.

Kapatıyorum!

Bu öğreticide, bir sunucuda WordPress için OAuth kimlik doğrulama API'sinin nasıl kurulacağını ve belirteç kimlik bilgilerini almak için HTTP istemcisinin nasıl kullanılacağını tartıştım. Kodda bir sorun bulursanız veya tartışmaya eklemek isterseniz, lütfen aşağıya bir yorum bırakın.