2016-10-29 14 views
9

gibi komut dosyası diline güvenli şekilde gösterme C# REST API'm AngularJS web uygulamasından çağrılır. Web API'sini, kullanıcının kimliğini doğrulayarak ve kullanıcının belirli bir windows grubunun parçası olmasını sağlayarak güvenceye alırım.C# REST API'sini Python

Artık, kullanıcı API'yi komut dosyalarından (Python) çağırmayı tercih eder. Bunu nasıl uygularım? Onları json aramasının bir parçası olarak kullanıcı adı ve şifreyi almalı mıyım?

+0

Neden web için olduğu gibi aynı kimlik doğrulama mekanizmasını kullanmıyorsunuz? –

+0

Çerezleri ve tarayıcıdan beklenen başka bir sunucudan yetki kullanıyorum. Bu sadece uygun değil –

+2

Python http kütüphanelerinin kullanamadığı hiçbir şey. Ancak daha basit olmasını istiyorsanız, HTTP temel auth ve openid/OAuth API auth –

cevap

3

Şu anda kullanmakta olduğunuz tam olarak aynı kimlik doğrulama yöntemini kullanın. Kolayca Python başlıklarını artırabilir Eğer

from requests.auth import HTTPBasicAuth 
s = requests.Session() 

# Make the initial authentication request from a session object 
s.get('https://omg.wtf/user', auth=HTTPBasicAuth('user', 'pass')) 

# All subsequent requests from that session will include any cookies set in the initial response 
r = s.get('http://omg.wtf/911') 
print(r.text) 
+0

Python betiğine yeniden yönlendirmek ve bir çerez ayarlamak mümkün mü? –

+0

Yönlendirme ne demek istiyorsun? Çerez s = requests.Session() içinde saklanır. Çerez/oturum kullanarak her zaman yeni isteklerde bulunabilirsiniz. –

+0

Tweak @ SeanThorburn'un orijinal kodu, böylece ilk istek de oturum nesnesinden yapılır. Bu nesne, ilk yanıtta ayarlanan çerezleri hatırlar ve bu çerez değerlerini sonraki isteklerinize gönderir. –

4

, sana belirteç kimlik doğrulamasını kullanmak öneririm:

İşte (denenmemiş) Abazik örneği kullanılarak piton olduğunu. Microsoft, bu tür bir kimlik doğrulamasını doğrudan sağlamaz, ancak OWIN projesi aracılığıyla. Kullanımı zor değil, ama ilk önce nasıl çalıştığını öğrenmelisin. Çok iyi ve kapsamlı bir öğretici var here. Bir kullanıcı adı/parola sağlayarak temel olarak bir simge (belirli bir süre için geçerli olan) alırsınız. Bu belirteç şifrelenir/imzalanır, bu da arka ucunuzun güvenebileceği anlamına gelir, her istekte kullanıcı adı/parola doğrulanmasına gerek kalmadan (ki bu maliyetlidir). Ardından bu belirteci Authorization bearer token numaralı bir başlığa veya her istek için benzer bir şeye eklemeniz gerekir. Alternatif olarak, istersen geri tutarlılığı korumak için çerezde jetona sahip olabileceğini düşünüyorum.

Aynı mekanizmayı da Açısal olarak da kullanabilmenizi öneririm, çünkü orada kolayca bir engelleyici ekleyebilir ve bunlarla birlikte çerezleri ve CSRF sorunlarından kaçınabilirsiniz.